jmp指令用法總結:
1.直接用法(只能在Debug下使用的匯編指令):
jmp 段地址:偏移地址
功能:修改CS、IP的內容
例子:jmp 55BA:8
執行后:(CS)=55EAH, (IP)=0008H
2.根據標號進行轉移的用法:
(1).轉移的目的地址不在指令中,依據位移進行轉移(段內轉移)
a.jmp short 標號(IP的修改范圍為-128至127)
功能:(IP)=(IP)+8位位移
b.jmp near ptr 標號(IP的修改范圍為-32768至32767)
功能:(IP)=(IP)+16位位移
注:依據位移進行的轉移是段內轉移,位移=標號處的地址-jmp指令后的第一個字節的地址。
(2).轉移的目的地址在指令中(段間轉移)
jmp far ptr 標號
功能:用標號的段地址和偏移地址修改CS和IP
(CS)=標號所在段的段地址;(IP)=標號所在段的偏移地址
例子:略
3.轉移地址在寄存器中的用法:
jmp 某一合法寄存器
功能:用寄存器中的值修改IP
例子:jmp ax
執行后:(IP)=(ax)
注意:合法寄存器是指通用寄存器。一個有趣的現象:jmp ip在debug下調試也是
錯誤的。字面上理解:(IP)=(IP),但CPU并不支持
4.轉移地址在內存中的用法:
(1).jmp word ptr 內存單元地址(段內轉移)
功能:從內存單元地址出開始存放著一個字,是轉移的目的偏移地址
例子:mov ax,0123H
mov [bx],ax
jmp word ptr [bx]
執行后:(IP)=0123H
(2).jmp dword ptr 內存單元地址(段間轉移)
功能:從內存單元地址處開始存放著兩個字,高地址處的字是轉移的目的段地址,低地址處是轉移的目的偏移地址
例子:mov ax,0123H
mov [bx],ax
mov word ptr [bx+2],0
jmp dword ptr [bx]
執行后:(CS)=0, (IP)=0123H