轉移指令的原理

2021-09-26 03:18:16 字數 1402 閱讀 6888

8086cpu的轉移指令分為以下幾類:

無條件轉移指令(如:jmp)

條件轉移指令

迴圈指令(如:loop)

過程中斷

1、操作符offset

offset在組合語言中是由編譯器處理的符號,它的功能是取得標號的偏移位址。

例: mov si,offset s

2、jmp指令

為無條件轉移指令,可以只修改ip也可以同時修改cs和ip

jmp指令要給出兩種資訊:

3、依據位移進行轉移的jmp指令

jmp short 標號

實現的是段內短轉移,它對ip的修改,範圍為-128~127

assume cs:codesg

codesg segment

start: mov ax,0

jmp short s

add ax,1

s:inc ax

codesg ends

end start

實際jmp short 標號 的功能為(ip)=(ip)+8位位移

short 指明此處的位移為8位位移

8位位移的範圍為-128~127 用補碼表示

8位位移由編譯程式在編譯時算出

jmp near ptr 標號

實現的是段內近轉移。

(ip)=(ip)+16位位移。範圍為-32768~21727

4、轉移目的位址在指令中的jmp指令

jmp far ptr 標號

實現的是段間轉移,又稱遠轉移。

assume cs:codesg

codesg segment

start: mov ax,0

mov bx,0

jmp far ptr s

db 256 dup (0)

s:add ax,1

inc ax

codesg ends

end start

5、轉移位址在暫存器中的jmp指令

格式:jmp 16位暫存器

功能: ip=(16位暫存器)

6、轉移位址在記憶體中的jmp指令

格式:jmp word ptr 記憶體單元位址(段內轉移)

jmp dword ptr 記憶體單元位址(段間轉移)

7、jcxz指令

為條件轉移指令,所有的有條件轉移指令都是短位址,對應機器碼中包含轉移的位移,對ip的修改範圍為-128~127

格式: 

jcxz 標號

(如果(cx=0),則轉移到標號處執行)

(cx不等於0,程式向下執行)

8、loop指令

9、根據位移進行轉移的意義

目的:方便了程式段在記憶體中的浮動裝配

10、編譯器對轉移位移超界的檢測

轉移指令的原理

可以修改ip,或者同時修改cs和ip的指令統稱為轉移指令。8086cpu的轉移行為有以下幾類 根據轉移指令對於ip的修改範圍不同,所以段內轉移又分為 短轉移和近轉移 8086cpu的轉移指令分為以下幾類 不同轉移指令的轉移條件可能不同,但是轉移的基本原理是相同的 offset是在組合語言中是由編譯器...

八 彙編 轉移指令的原理

可以修改ip,或者同時修改cs和ip的指令統稱為轉移指令。或者說轉移指令就是可以控制cpu執行記憶體中某處 的指令。8086cpu 轉移行為可以有以下幾類 8086cpu的轉移指令分為 a.取得標號的偏移位址。a.jmp 無條件轉移指令,可以只修改ip,也可以同時修改 cs 和ip。a.jmp sh...

彙編轉移指令jmp原理

在計算機中儲存的都是二進位制數,計算機將記憶體中的某些數當做 某些數當做資料。在根本上,將cs,ip暫存器所指向的記憶體當做 指令轉移就是修改cs,ip暫存器的指向,彙編中提供了一種修改它們的指令 jmp。jmp指令可以修改ip或cs和ip的值來實現指令轉移,指令格式為 jmp 標號 將指令轉移到標...