本博文是對原書8.3.10的內容的總結。spa
指令格式是:code
jmp short 標號
標號也能夠替換成具體的數值(標號和數值是等價的),例如blog
jmp short 0x2000
說明:內存
(1)該指令屬於段內轉移指令,並且只容許轉移到距離當前指令-128~127字節的地方。編譯器
(2)指令的功能是:(IP) = (IP)+8位位移量(範圍是-127~128,用補碼錶示)編譯
(3)short指明此處的位移爲8位class
(4)8位位移=標號處的地址-jmp指令後的第一個字節的地址;8位位移由編譯器在編譯時算出;總結
指令格式是: 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內)。
指令格式爲:
jmp (near) r16/m16
說明:
(1)這種轉移也是段內轉移,可是轉移的目標不是在指令中直接給出,而是由一個16位的通用寄存器或者內存地址間接給出
(2)near關鍵字能夠省略
(3)執行時,處理器將用16位通用寄存器的值或內存中的那個字取代IP寄存器的內容。
指令格式爲:
jmp 段地址:偏移地址
說明:
(1)屬於段間轉移
(2)執行時,處理器用段地址的內容取代CS的值,用偏移地址(也能夠是標號)取代IP的值
指令格式爲:
jmp far m32
說明:
(1)關鍵字far是必須的
(2)操做數是一個內存地址,內存地址處存放着2個字,低字是偏移地址,高字是段地址
(3)執行時,處理器根據內存地址找到偏移地址和段地址,分別用來代替IP和CS的內容
(完)