jcnd(bcnd)


条件分岐を行います。(Jump on Condition)

[指定形式]

-

jcnd disp22

 

disp22に指定できるものを次に示します。

-

22ビット幅までの値を持つ絶対値式

-

ラベルのPCオフセット参照を持つ相対値式

[機能]

cnd部分の文字列で示されるフラグ状態(「表 5.37 jcnd命令」を参照)と,現在のフラグ状態を比較し,一致した場合は,オペランドに指定した絶対値式,または相対値式の値と現在のプログラム・カウンタ(PC)の値を加算したアドレスに制御を移します。

jbr以外のjcnd命令に対しては,bcndというニモニックを,jbr命令に対してはbrという機械語命令を用いることもできます(機能に違いはありません)。

表 5.37

jcnd命令

命令

フラグ状態

フラグ状態の意味

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つ生成されます。

(a)

-256〜+255の範囲の絶対値式

(b)

本命令と同じファイル内の同じセクションに定義を持つラベルのPCオフセット参照を持ち,-256〜+255の範囲の相対値式

jcnd    disp9
bcnd    disp9

機械語命令の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というように逆の条件で分岐を行う命令を示しています。

[フラグ]

CY

OV

S

Z

SAT

[注意事項]

-

disp22に,-2097150〜+2097153の範囲を越える絶対値式を指定した場合,次のメッセージが出力され,アセンブルが中止されます。

E0550230 : ディスプレースメントとして指定された値が指定可能な値の範囲を越えています。

 

-

disp22に,奇数値を持つ絶対値式を指定した場合,次のメッセージが出力され,アセンブルが中止されます。

E0550226 : 奇数のディスプレースメントが指定されています。

 

-

disp22に,17ビット幅の絶対値式を持つjcnd命令を指定したい場合は,jcnd17命令を指定してください。