←前へ :  INDEX :  練習問題へ→


  次はフラグを見て分岐する命令です。

ニーモニック

意味
意味
フラグ
JA
JAE
JB
JBE
JC
JE
JG
JGE
JL
JLE
JNA
JNAE
JNB
JNBE
JNC
JNE
JNG
JNGE
JNL
JNLE
JNO
JNP
JNS
JNZ
JO
JP
JPE
JPO
JS
JZ
上なら(符号なし)
以上なら(符号なし)
下なら(符号なし)
以下なら(符号なし)
Carry Flag=1なら
イコールなら
大きいなら(符号付き)
大きいか同じなら(符号付き)
小さいなら(符号付き)
小さいか同じなら(符号付き)
上じゃないなら=以下なら(符号なし)
以上じゃないなら=下なら(符号なし)
下じゃないなら=以上なら(符号なし)
以下じゃないなら=上なら(符号なし)
Carry Flag=0 = CF=1じゃないなら
イコールじゃいなら
大きくないなら(符号付き)
大きくも同じでもないなら(符号付き)
小さくないなら(符号付き)
小さくも同じでもないなら(符号付き)
オーバーフローでないなら
Parity Flag=0 = PF=1じゃないなら
マイナスでないなら
ゼロじゃないなら
オーバーフローなら
Parity Flag=1なら
パリティが奇数(PF=1)なら
パリティが偶数(PF=0)
マイナスなら
ゼロなら
Jump if avobe
Jump if avobe or equal
Jump if below
Jump if below or equal
Jump if carry
Jump if equal
Jump if great
Jump if great or equal
Jump if less
Jump if less or equal
Jump if not avobe
Jump if not avobe or equal
Jump if not below
Jump if not below or equal
Jump if not carry
Jump if not equal
Jump if not great
Jump if not great or equal
Jump if not less
Jump if not less or equal
Jump if not overflow
Jump if not parity
Jump if not sign
Jump if not zero
Jump if overflow
Jump if parity
Jump if parity even
Jump if parity odd
Jump if sign
Jump if zero
CF=0 and ZF=0
CF=0
CF=1
CF=1 and ZF=1
CF=1
ZF=1
ZF=0 and SF=OF
SF=OF
SF<>OF
ZF=1 or SF<>OF
CF=1 or ZF=1
CF=1
CF=0
CF=0 and ZF=0
CF=0
ZF=0
ZF=1 or SF<>OF
SF<>OF
SF=OF
ZF and SF=OF
OF=0
PF=0
SF=0
ZF=0
OF=1
PF=1
PF=1
PF=0
SF=1
ZF=1
  たくさんあって、ごちゃごちゃしていてわかりずらいかと思います。覚え方としてはいくつかあります。英語で覚える人、フラグで覚える人。よく見ると同じものがいくつかあります。例えば、「JAE」=「JNB」。意味で考えると、「Jump if above or equal=以上なら」と「Jump if not below=下でないなら=以上なら」同じですね。フラグをみると両方「CF=0」ならジャンプしますから、動作も同じです。アセンブラによってマシン語(2進数の羅列)に変換されても同じです。これらは人間が意味と照らし合わせて覚えやすいように、同じ命令を複数用意してあるのです。

  ところで、何が大きかったり、小さかったりするのでしょう? これは 「CMP」命令と関係しているのです。 「CMP AX,BX」で、AXの方が○○だったらジャンプするわけです。 「CMP AX,BX」の次に「JA 100h」とあったら、 AXが上の時にジャンプします。

  さて次に不思議なのが、「JZ」と「JE」。「Jump if Zero」と「Jump if equal」。フラグはどちらも「ZF=1」の時にジャンプする。なんで「ゼロ」と「イコール」が同じ意味なんでしょうか? 「CMP」命令を考えると「イコール」はわかりますよね。前にも書きましたが「CMP」は「SUB」と同じように引き算をして、そのフラグだけを結果に残す命令なのです。したがって、引き算の結果0になれば、「ゼロ」と考えられますし、同じ値なら(ようするに引いた結果0)「イコール」と考えられます。

  まぁ、よく使うものはそのうち自然と覚えてくるので、別に覚える必要はないでしょう。


←前へ :  INDEX :  練習問題へ→