|
1: 2007-12-04 (火) 11:48:56 |
| + | [[FrontPage]] |
| | | |
| + | 比較を行う |
| + | 比較の結果は各フラグで判定できる |
| + | |
| + | CMP AX,BX ;AXの内容とBXの内容を比較する |
| + | |
| + | |
| + | |
| + | *結果 [#i071c2c0] |
| + | -同じだった!!! |
| + | MOV AX,0x20 |
| + | MOV BX,0x20 |
| + | CMP AX,BX |
| + | |
| + | 結果、各種フラグがセットされますのでそのすぐ下で条件ジャンプをします。 |
| + | |
| + | *単純な比較 [#b4dedf8a] |
| + | JZ xxxxH ;AXとBXが同じだったらジャンプ! |
| + | JE xxxxH ;AXとBXが同じだったらジャンプ! |
| + | |
| + | JNZ xxxxH ;AXとBXが違っていたらジャンプ! |
| + | JNE xxxxH ;AXとBXが違っていたらジャンプ! |
| + | |
| + | |
| + | *符号なし整数比較 [#a5818235] |
| + | 頭のビットを符号としないで比較する。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 )ならジャンプ! |
| + | |
| + | |
| + | *符号あり整数比較 [#fad58d64] |
| + | 頭のビットを符号として比較する。 |
| + | |
| + | 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 )ならジャンプ! |
| + | |
| + | *符号とは? [#obc13660] |
| + | レジスタにセットされた16進数の値を、符号付き変数とするか符合なし変数と捕らえるか。(これは最後はプログラマの判断になる) |
| + | |
| + | たとえば、AXレジスタに0xFFをセットしたとする。この0xFFを符号なしと捕らえると、255という値になるが、符号付だと解釈すると-1という扱いになる。 |
| + | |
| + | これを意識せずに比較を行うとおかしくなってしまうわけ。 |
| + | |
| + | そのため、比較命令はおのおの、符号ありと符号なしに分かれて別々に用意されている。 |