1.可以修改ip,或者同時修改cs和ip的指令統稱為轉移指令。
2.8086cpu的轉移行為有以下幾類:
①只修改ip時,稱為段內轉移,比如:jmp ax。段內轉移又分為:短轉移和近轉移
短轉移ip的修改範圍為-128~127
近轉移ip的修改範圍為-32768~32767
②同時修改cs和ip時,稱為段間轉移,比如:jmp 1000:0
3.8086cpu的轉移指令分為以下幾類:
① 無條件轉移指令(如:jmp)
② 條件轉移指令
③ 迴圈指令(如:loop)
④ 過程
⑤ 中斷
4.操作符offset
操作符offset在組合語言中是由編譯器處理的符號,它的功能是取得標號的偏移位址。
assume cs:codesg
codeseg segment
start:mov ax,offset start ; 相當於 mov ax,0
s:mov ax,offset s ; 相當於mov ax,3
codesg ends
end start
5.jmp指令
jmp為無條件轉移,可以只修改ip,也可以同時修改cs和ip;
6.依據位移進行轉移的jmp指令
①jmp short 標號**到標號處執行指令)
這種格式的 jmp 指令實現的是段內短轉移,它對ip的修改範圍為 -128~127,也就是說,它向前轉移時可以最多越過128個位元組,向後轉移可以最多越過127個位元組。
②jmp near ptr 標號 它實現的時段內近轉移
③jmp far ptr 標號 實現的是段間轉移,又稱為遠轉移。
7.指令「jmp short 標號」的功能為(ip)=(ip)+8位位移。
(1)8位位移=「標號」處的位址-jmp指令後的第乙個位元組的位址;
(2)short指明此處的位移為8位位移;
(3)8位位移的範圍為-128~127,用補碼表示
(如果你對補碼還不了解,請閱讀附註2)
(4)8位位移由編譯程式在編譯時算出。
8.指令「jmp near ptr 標號」的說明:
(1)16位位移=「標號」處的位址-jmp指令後的第乙個位元組的位址;
(2)near ptr指明此處的位移為16位位移,進行的是段內近轉移;
(3)16位位移的範圍為:-32769~32767,用補碼表示;
(4)16位位移由編譯程式在編譯時算出。
9.指令 「jmp far ptr 標號」 功能如下:
(cs)=標號所在段的段位址;
(ip)=標號所在段中的偏移位址。
far ptr指明了指令用標號的段位址和偏移位址修改cs和ip。
(2)jmp dword ptr 記憶體單元位址(段間轉移)
功能:從記憶體單元位址處開始存放著兩個字,高位址處的字是轉移的目的段位址,低位址處是轉移的目的偏移位址。
(cs)=(記憶體單元位址+2)
(ip)=(記憶體單元位址)
記憶體單元位址可用定址方式的任一格式給出。
11.jcxz指令
jcxz指令為有條件轉移指令,所有的有條件轉移指令都是短轉移,在對應的機器碼中包含轉移的位移,而不是目的位址。對ip的修改範圍都為-128~127。
指令格式:jcxz 標號
(如果(cx)=0,則轉移到標號處執行。)
jcxz 標號 指令操作:
當(cx)=0時,(ip)=(ip)+8位位移)
8位位移=「標號」處的位址-jcxz指令後的第乙個位元組的位址;
8位位移的範圍為-128~127,用補碼表示;
8位位移由編譯程式在編譯時算出。
當(cx)=0時,什麼也不做(程式向下執行)。
12.loop指令
loop指令為迴圈指令,所有的迴圈指令都是短轉移,在對應的機器碼中包含轉移的位移,而不是目的位址。對ip的修改範圍都為-128~127。
指令格式:loop 標號
((cx))=(cx)-1,如果(cx)≠0,轉移到標號處執行。
loop 標號 指令操作:
(1)(cx)=(cx)-1;
(2)如果(cx)≠0,(ip)=(ip)+8位位移。
8位位移=「標號」處的位址-loop指令後的第乙個位元組的位址;
8位位移的範圍為-128~127,用補碼表示;
8位位移由編譯程式在編譯時算出。
當(cx)=0,什麼也不做(程式向下執行)。
組合語言學習筆記
學習參考資料 大灰狼 講彙編 資料匯流排,位址匯流排,控制匯流排。位址匯流排有多少條就決定了cpu最大的記憶體使用量。80386有32位位址匯流排,所以它的定址能力就是4g.暫存器 通用暫存器,段暫存器,ax暫存器 通用暫存器,存放資料。高位位元組ah,低位位元組al。實體地址表示方法 位址加法器,...
組合語言學習筆記
cs ip是指向程式執行的位置 code segment ds 儲存記憶體中取資料的位址,data segment ss sp是指向堆疊的位置 stack segment cx 裡儲存的是loop執行的標誌 loop執行時,cx cx 1,若此時cx裡值為0,則跳出loop,否則繼續loop 初始 ...
組合語言學習筆記
編譯下面的程式,生成列表檔案,觀察標號在機器碼中變成了什麼?小組中的同學都說一說,說出你看到了什麼,說出你的疑問,讓小夥伴們一起解決。下面是程式 這個程式的功能沒有意義,只用於觀察程式中的標號 assume cs codesg,ds datasg datasg segment a db 1,2,3,...