資料集
ここはhideyosiの学習帳です。いろいろな資料を集めたり整理したりしています。オイラ用のノートなので間違っていたり未完成だったりしますので信用度は相当低いことをあらかじめご了承くださいませ。

値2つをCMP命令で比較し、その結果次第でジャンプを行う。

  • 他の言語で言えば if ・・・ then ・・・ goto のような処理だと思えばよい。
CMP    AX,BX           ;AXの内容とBXの内容を比較する

結果、各種フラグがセットされますのでそのすぐ下で条件ジャンプをします。

単純な比較 anchor.png Edit

JZ     xxxxH        ;AXとBXが同じだったらジャンプ!
JE     xxxxH        ;AXとBXが同じだったらジャンプ!

JNZ    xxxxH        ;AXとBXが違っていたらジャンプ!
JNE    xxxxH        ;AXとBXが違っていたらジャンプ! 
Page Top

符号なし整数比較 anchor.png Edit

頭のビットを符号としないで比較する。Cの変数でいえばunsignedで宣言した変数のようなもの

JA      xxxxH       ;AXのほうが大きかった( AX > BX )らジャンプ!
JNBE    xxxxH       ;AXのほうが大きかった( AX > BX )らジャンプ!
 
JB	 xxxxH       ;BXのほうが大きかった( AX < BX )らジャンプ!
JNAE    xxxxH       ;BXのほうが大きかった( AX < BX )らジャンプ!

JAE    xxxxH        ;AXがBX以上( AX >= BX )ならジャンプ!
JNB    xxxxH        ;AXがBX以上( AX >= BX )ならジャンプ!

JBE    xxxxH        ;AXがBX以下( AX <= BX )ならジャンプ!
JNA    xxxxH        ;AXがBX以下( AX <= BX )ならジャンプ!
Page Top

符号あり整数比較 anchor.png Edit

頭のビットを符号として比較する。

JG      xxxxH       ;AXのほうが大きかった( AX > BX )らジャンプ!
JNLE    xxxxH       ;AXのほうが大きかった( AX > BX )らジャンプ!
 
JL	 xxxxH       ;BXのほうが大きかった( AX < BX )らジャンプ!
JNGE    xxxxH       ;BXのほうが大きかった( AX < BX )らジャンプ!

JGE    xxxxH        ;AXがBX以上( AX >= BX )ならジャンプ!
JNL    xxxxH        ;AXがBX以上( AX >= BX )ならジャンプ!

JLE    xxxxH        ;AXがBX以下( AX <= BX )ならジャンプ!
JNG    xxxxH        ;AXがBX以下( AX <= BX )ならジャンプ!
Page Top

符号とは? anchor.png Edit

レジスタにセットされた16進数の値を、符号付き変数とするか符合なし変数と捕らえるか。(これは最後はプログラマの判断になる)

たとえば、AXレジスタに0xFFをセットしたとする。この0xFFを符号なしと捕らえると、255という値になるが、符号付だと解釈すると-1という扱いになる。

これを意識せずに比較を行うとおかしくなってしまうわけ。

そのため、比較命令はおのおの、符号ありと符号なしに分かれて別々に用意されている。


Front page   Edit Freeze Diff Backup Upload Copy Rename Reload   New Page Page list Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom)
Counter: 2637, today: 1, yesterday: 0
Last-modified: 2012-10-22 (Mon) 21:57:54 (GMT) (2820d) by