条件分岐を行います。(Jump on Condition)
[指定形式]
disp22に指定できるものを次に示します。
[機能]
cnd部分の文字列で示されるフラグ状態(「表 5.37 jcnd命令」を参照)と,現在のフラグ状態を比較し,一致した場合は,オペランドに指定した絶対値式,または相対値式の値と現在のプログラム・カウンタ(PC)の値を加算したアドレスに制御を移します。注
注 | jbr以外のjcnd命令に対しては,bcndというニモニックを,jbr命令に対してはbrという機械語命令を用いることもできます(機能に違いはありません)。 |
|
|
|
jgt
|
((S xor OV)or Z)= 0
|
Greater than(signed)
|
jge
|
(S xor OV)= 0
|
Greater than or equal(signed)
|
jlt
|
(S xor OV)= 1
|
Less than(signed)
|
jle
|
((S xor OV)or Z)= 1
|
Less than or equal(signed)
|
jh
|
(CY or Z)= 0
|
Higher(Greater than)
|
jnl
|
CY = 0
|
Not lower(Greater than or equal)
|
jl
|
CY = 1
|
Lower(Less than)
|
jnh
|
(CY or Z)= 1
|
Not higher(Less than or equal)
|
je
|
Z = 1
|
Equal
|
jne
|
Z = 0
|
Not equal
|
jv
|
OV = 1
|
Overflow
|
jnv
|
OV = 0
|
No overflow
|
jn
|
S = 1
|
Negative
|
jp
|
S = 0
|
Positive
|
jc
|
CY = 1
|
Carry
|
jnc
|
CY = 0
|
No carry
|
jz
|
Z = 1
|
Zero
|
jnz
|
Z = 0
|
Not zero
|
jbr
|
−
|
Always(無条件)
|
jsa
|
SAT = 1
|
Saturated
|
[詳細説明]
- | disp22に次のものを指定した場合,アセンブラでは,機械語命令のbcnd命令注が1つ生成されます。 |
(b) | 本命令と同じファイル内の同じセクションに定義を持つラベルのPCオフセット参照を持ち,-256〜+255の範囲の相対値式 |
注 | 機械語命令のbcndは,ディスプレースメントに-256〜+255(0xFFFFFF00〜0xFF)の範囲のイミーディエトをとります。 |
- | disp22 に次のものを指定した場合,アセンブラでは命令展開が行われ,複数の機械語命令が生成されます。 |
(a) | -256〜+255の範囲を越え,-65536〜+65535の範囲の絶対値式,または本命令と同じファイル内の同じセクションに定義を持つラベルのPCオフセット参照を持ち,-256〜+255の範囲を越え,-65536〜+65535の範囲の相対値式 |
jbr disp17
|
jr disp17
|
jcond disp17
|
bcond disp17
|
(b) | -65536〜+65535の範囲を越え,-2097150〜+2097153の範囲注1の絶対値式,または本命令と同じファイル内の同じセクションに定義を持つラベルのPCオフセット参照を持ち-65536〜+65535の範囲を越える範囲の相対値式,または本命令と同じファイル内に定義を持っていないか同じセクションに定義を持っていないラベルのPCオフセット参照を持つ相対値式 |
jbr disp22
|
jr disp22
|
jsa disp22
|
bsa Label1
br Label2
Label1:
jr disp22 - 4
Label2:
|
jcond disp22
|
bncond Label 注2
jr disp22 - 2
Label:
|
注 1. | -2097150〜+2097153の範囲はjbrおよびjsa命令以外の命令の場合の範囲で,jbr命令の場合は-2097152〜+2097151,jsa命令の場合は-2097148〜+2097155となります。 |
注 2. | bncndは,たとえばbzに対するbnz,bgtに対するbleというように逆の条件で分岐を行う命令を示しています。 |
[フラグ]
[注意事項]
- | disp22に,-2097150〜+2097153の範囲を越える絶対値式を指定した場合,次のメッセージが出力され,アセンブルが中止されます。 |
E0550230 : ディスプレースメントとして指定された値が指定可能な値の範囲を越えています。
|
- | disp22に,奇数値を持つ絶対値式を指定した場合,次のメッセージが出力され,アセンブルが中止されます。 |
E0550226 : 奇数のディスプレースメントが指定されています。
|
- | disp22に,17ビット幅の絶対値式を持つjcnd命令を指定したい場合は,jcnd17命令を指定してください。 |