導入
分岐の基本は2ステップです。まず cmp で2つの値を比べ、その結果(フラグ)を見て、jmp 系の命令でジャンプするかどうかを決めます。
説明
cmp eax, 10 ; eax と 10 を比較(内部で eax - 10 を計算しフラグを立てる)
je equal ; 等しければ(Jump if Equal)ラベル equal へ
jmp done ; そうでなければ無条件で done へ
equal:
; ここは eax == 10 のときだけ実行される
done:
主な条件ジャンプ(符号つき比較):
| 命令 | 意味 | Cで言うと |
|---|---|---|
je / jz | 等しい / ゼロ | == |
jne / jnz | 等しくない | != |
jg | より大きい | > |
jge | 以上 | >= |
jl | より小さい | < |
jle | 以下 | <= |
jmp | 無条件ジャンプ | (必ず飛ぶ) |
cmp a, bは「a - b」を計算して結果は捨て、フラグだけを残します。次のジャンプ命令がそのフラグを見ます。je(等しければ飛ぶ)などが、ifの正体です。