8086處理器的無條件轉移指令——《x86彙編語言:從實模式到保護模式》讀書筆記13

本博文是對原書8.3.10的內容的總結。spa

1、相對短轉移

指令格式是:code

jmp short 標號

標號也能夠替換成具體的數值(標號和數值是等價的),例如blog

jmp short 0x2000

說明:內存

(1)該指令屬於段內轉移指令,並且只容許轉移到距離當前指令-128~127字節的地方。編譯器

(2)指令的功能是:(IP) = (IP)+8位位移量(範圍是-127~128,用補碼錶示)編譯

(3)short指明此處的位移爲8位class

(4)8位位移=標號處的地址-jmp指令後的第一個字節的地址;8位位移由編譯器在編譯時算出;總結

2、16位相對近轉移

指令格式是: top

jmp near 標號

同理,標號也能夠是具體的數值,如di

jmp near 0x3200

說明:

(1)該指令屬於段內轉移,轉移範圍是-32768~32767

(2)指令的功能是:(IP)= (IP)+16位位移量(範圍是-32768~32767,用補碼錶示)

(3)near指明此處的位移爲16位

(4)16位位移=標號處的地址-jmp指令後的第一個字節的地址;16位位移由編譯器在編譯時算出;

 

注意:若是沒有指定關鍵字是near或者short,那麼NASM編譯器會根據目標位置距離當前指令的位移量自動選擇near(範圍在-127~128內)或者short(範圍在-127~128外,可是在-32768~32767內)。

 

3、16位間接絕對近轉移

指令格式爲:

jmp (near)  r16/m16

說明:

(1)這種轉移也是段內轉移,可是轉移的目標不是在指令中直接給出,而是由一個16位的通用寄存器或者內存地址間接給出

(2)near關鍵字能夠省略

(3)執行時,處理器將用16位通用寄存器的值或內存中的那個字取代IP寄存器的內容。

4、16位直接絕對遠轉移

指令格式爲:

jmp 段地址:偏移地址

說明:

(1)屬於段間轉移

(2)執行時,處理器用段地址的內容取代CS的值,用偏移地址(也能夠是標號)取代IP的值

5、16位直接絕對遠轉移

指令格式爲:

jmp far m32

說明:

(1)關鍵字far是必須的

(2)操做數是一個內存地址,內存地址處存放着2個字,低字是偏移地址,高字是段地址

(3)執行時,處理器根據內存地址找到偏移地址和段地址,分別用來代替IP和CS的內容


(完)

相關文章
相關標籤/搜索