後藤さん、こんにちは。 すでに他の方が答えていますのでちょっと
補足として書きます。
Bccはマニュアルにあるように「条件によって分岐する」命令です。
ですからccの部分は「どのような条件を利用するか」という「命令の詳細指示」
が入ると考えれば良いでしょう。
条件によって分岐するということは「ある条件が成立した時=True(真)となった
時」実行されるということです。
ですからbra命令は常時Trueですから「いつも条件が成立」=「無条件」
となり、無条件分岐命令です。brnは逆に「いかなる時も条件が成立しない」=
いつもfalse(偽)ですから「分岐できない分岐命令」となるわけです。
では、「条件」って何でしょう。 これがCCRの各ビットやビットの組み合わせ
です。マニュアルの「条件」のところのtrue,falseと並んでZ=1,Z=0,CvZ=1,...
などが書かれていますね。この記号とccrの記号が一致しますでしょう。
> もしかして、CCRの下位4bitは、演算結果のコンディション?として
> 割り当てられていて、
ここまでは、その通りです。このビット条件を使って分岐します。条件分岐は
演算する
|
CCRが変化する
|
CCR条件で分岐する <- この部分で使います。
> それを指してるんですかねえ。
> 当然、B'0000はD'0でTrue,B'0001はD'1でFalseって事。
これは違います。先ほど説明した様に、ccの4ビットは「分岐条件として
CCRのどのビットを使うか」を指示しているのです。CCRの4ビットのビット
パターンを示しているのではありません。
例:
LDC.B #0,CCR <- CCRオール0にします。
MOV.B #0,R0L <= R0Lに0を持ってきます、このときCCR=00000100
となります。
BNE LABEL1 <= CCRのZビット=1ですから条件は偽となり分岐
しません。
Zビットだけの条件で分岐するか否かが決まります。
さて、BRAやBRN命令は何のためにあるのでしょうか?
BRAは近距離でしたらjmp @:24より効率的にプログラムメモリを使用できます。
近距離でしたらJMP @:24に比べて実行時間も有利です。長距離では優位性は
ありません。
BRNは実行ステート数の多いNOP命令です。
では。
--
/******************************************************************************
Name: 廣田 正孝 "Masataka Hirota"
E-mail address: mhirota@xxxxxxxxxxxxx
GCD03040@xxxxxxxxxxx
******************************************************************************/