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 標號 將指令轉移到標...