[H8-ML(1092)] RE: [H8-ML(1091)] Re: BRAの"cc:0000"と"条件:True"は、何を指してるんでしょうか?
From: "Kohya Gotoh" <hoshikage@xxxxxxxxx>
Date: 2001年04月13日(金)13時51分42秒
廣田さん、丁寧な解説ありがとうございます。後藤です。

> ですからbra命令は常時Trueですから「いつも条件が成立」=「無条件」
> となり、無条件分岐命令です。
□例えば
LABEL1:
	LCD.B	#1,CCR
	BRA LABEL1
これでも無限ループって事ですね。

> brnは逆に「いかなる時も条件が成立しない」=
> いつもfalse(偽)ですから「分岐できない分岐命令」となるわけです。
■だけど
LABEL1:
	LCD.B	#0,CCR
	BRN	LABEL1
の場合、BRNのccは"0001"で条件は"False"ですよね。
すると1の立ってるCCRの”Cビット”を条件”False”と比較すると
”0”つまりFalseだから、結果は”True”になり分岐しちゃうような
気がするんですけど、どこの解釈がまちがってるんでしょう?

-----途中略-----
> > 当然、B'0000はD'0でTrue,B'0001はD'1でFalseって事。
>  これは違います。先ほど説明した様に、ccの4ビットは「分岐条件として
> CCRのどのビットを使うか」を指示しているのです。CCRの4ビットのビット
> パターンを示しているのではありません。
■BRNでの質問と重複するんですが、
ご教授して頂いた内容を、
”CCRをccでビットマスクして条件と比較する”と解釈すると、
下記の場合なぜZビットだけの条件になるんですか?
マニュアルには、
BNE|Not EQual|0110|Z=0|X=/=Y 符号なし/あり
って”0110”と記載されてます。
つまり これだとVビットも使うって事ですよね。
だけど条件はZ=0としか記載されてない?
ううん分からん(~_~;)
> 例:
>   LDC.B #0,CCR   <- CCRオール0にします。
>   MOV.B #0,R0L   <= R0Lに0を持ってきます、このときCCR=00000100
>            となります。
>   BNE LABEL1     <= CCRのZビット=1ですから条件は偽となり分岐しません。
>            Zビットだけの条件で分岐するか否かが決まります。

お手数でしょうが、ひとつよろしくお願いします。

スレッド概略
[1083(R)](起点)
 └[1091(U)]
   └[表示中]
     ├[1093(1)]
     └[1094(2)]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]