包含:jmp、call、ret、retf、loop、jcxz
以下為正文內容:
兩種轉移方式:
1、段內轉移(只修改IP)
- 短轉移:IP的修改范圍為「-128~127」,即8位位移。
- 近轉移:IP的修改范圍為「-32768~32767」,即16位位移。
2、段間轉移(修改CS和IP)
jmp:無條件跳轉指令
1、jmp short 標號
段內段轉移。即(IP)=(IP)+8位位移。「注:(IP)表示IP寄存器中的值,下同」
2、jmp near 標號
段內近轉移。(IP)=(IP)+16位位移。
3、jmp far ptr 標號
段間轉移(遠轉移)。(CS)=標號的段地址,(IP)=標號的偏移地址。
4、jmp 16位的寄存器
(IP)=(16位的寄存器)
5、jmp word ptr 內存地址
(IP)=(內存單元),即用指定的內存單元中的值來填充IP。
6、jmp dword ptr 內存地址
(CS)=(內存地址+2),(IP)=(內存地址)。即用從指定的內存單元開始第2個字填充CS,用第1個字填充IP。
call指令
call指令用於將當前的IP壓棧或將CS、IP同時壓棧后進行程序的跳轉。
1、call 標號
將IP壓棧后跳轉。



2、call far ptr 標號
將CS和IP壓棧后跳轉。


3、call 16位寄存器
將IP壓棧后跳轉。

4、call word ptr 內存地址

ret/ref指令
ret


retf


可通過call與ret、retf搭配使用,實現父、子函數的跳轉。
loop指令
當cx寄存器的值不為0時,循環執行標號內指定的指令。
指令格式:

用偽代碼來描述:


jcxz指令
Jump while
CX is
Zero(我猜的)
當cx寄存器的值為0時,跳轉到標號處執行指令。
指令格式:
jcxz 標號
用偽代碼來描述:


The end


以上內容整理自:王爽《匯編語言 第二版》p177-p198
PS1:《匯編語言 第二版》PDF下載:
點擊前往某度雲,提取碼:04e0
PS2:安利一個寫x86匯編的IDE:emu8086,
點擊前往下載。 安裝的時候把例子也裝上,里面有很多有趣的例子!