本文へスキップ
BecomeCoder

アセンブリ言語コース · 第3章 制御構造 · レッスン6

cmp と jmp ― 比較とジャンプ

導入

分岐の基本は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 の正体です。