無条件にlabel に分岐します。
無条件分岐とは、C言語やN88-BASICで言うgotoで、他の処理に移行する命令である。
JMP ( Jump Unconditionally ) :無条件分岐
JMP DEST 動作 :DESTが示す番地に処理を移行する DEST : 相対オフセット、即値、メモリ、レジスタ 影響を受けるフラグ : なし
DESTが示す番地に処理を移行します。一般には処理を移行したい場所にラベルをつけて、そのラベルにジャンプするようにします。
実は、jmp命令には3種類あります。「short jmp」と「near jmp」、「far jmp」である。
jmp FUNC2 ;FUNC2に処理を移行する FUNC1: : : FUNC2: : : mov ax,4c00h int 21h jmp ax ;AXの内容の番地にジャンプする jmp 0 ;CSセグメントの0番地にジャンプする jmp ds:100h ;ds:100h番地の内容の番地にジャンプする
- short jmp
- 現在のアドレスの-128〜+127番地以内へのジャンプで、即値を示した場合である。 shortジャンプであるとわかっている場合には「jmp short FUNC1」と記述することによって、アセンブラ(コンパイラ)によっては、実行形式プログラムの大きさが小さくなる場合がある。
- near jmp
- 同じセグメント内でのジャンプ。上の例では「jmp ax」「jmp 0」「jmp ds:100h」が該当する。ほとんどのアセンブラではこれがデフォルトになっているが、特に「near jmp」であることを明記したい場合は「jmp near FUNC1」のように書く。
- far jmp
- 異なるセグメントへのジャンプ。上の例には示していない。例えば、「jmp far 100h:200h」、「jmp far [ds:100h]」のように書く。前者ではセグメント100hの200h番地にジャンプする。後者は、ds:100h の内容が1234h、102h番地の内容が5678hの場合、セグメントが5678hの 1234h番地にジャンプする。