第九章 轉移指令的原理

2022-06-05 05:39:09 字數 1806 閱讀 5527

一、操作符offset

格式:offset 標號

二、jmp指令

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

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

(1)jmp short 標號(實現段內短轉移)

功能:(ip)=(ip)+8位位移

①8位位移=標號處位址-jmp指令後的第乙個位元組的位址;

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

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

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

(2)jmp near ptr 標號(實現段內近轉移)

功能:(ip)=(ip)+16位位移

①16位位移=標號處位址-jmp指令後的第乙個位元組的位址;

②near ptr指明此處的位移為16位位移,進行的是段內近轉移;

③16位位移的範圍為-32768~32767,用補碼表示;

④16位位移由編譯程式在編譯時算出。

四、轉移的目的地在指令中的jmp指令

jmp far ptr 標號(實現段間轉移,又叫遠轉移)

(ip)=標號在段中的偏移位址。

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

jmp 16位reg

功能:(ip)=16位reg

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

兩種格式:

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

功能:從記憶體單元位址處開始存放著乙個字,是轉移的目的的偏移位址。

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

功能:從記憶體單元位址處開始存放著兩個字,高位址處的字是轉移的目的段位址,低位址處是轉移的目的偏移位址。

七、jcxz指令

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

格式:jcxz 標號(如果(cx)=0,轉移到標號處執行)

操作:當(cx)=0時,(ip)=(ip)+8位位移

①8位位移=標號處位址-jcxz指令後的第乙個位元組的位址;

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

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

當(cx)!=0時,程式向下執行。

八、loop指令

迴圈指令,所有的迴圈指令都是短轉移,在對應的機器碼中包含轉移的位移,而不是目的位址。對ip的修改範圍都是-128~127。

格式:loop 標號

操作:①cx=cx-1;     ②如果cx不等於0,(ip)=(ip)+8位位移

①8位位移=標號處位址-loop指令後的第乙個位元組的位址;

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

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

當(cx)=0時,程式向下執行。

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

方便了程式段在記憶體中的浮動裝置。

第九章 轉移指令

目錄有條件轉移指令 jcxz jne je等等 迴圈指令 loop 注意點課後檢測點 轉移指令可以理解為轉移程式執行位置的指令。轉移指令通常會修改ip或 ip與cs 其使用方式根據跳轉的距離 修改ip的範圍 分為三種 段內短轉移 跳轉的ip範圍為 128 127 段內近轉移 跳轉的ip範圍為 327...

組合語言 第九章 轉移指令的原理

1 可以修改ip,或同時修改cs和ip的指令統稱為轉移指令.轉移指令就是可以控制cpu執行記憶體中某處的 指令 8086cpu的轉移行為有以下幾類 1 只修改ip時,稱為段內轉移.比如 jmp ax.2 同時修改cp和ip時,稱為段間轉移,比如 jmp 1000 0 由於轉移指令對ip的修改範圍不同...

組合語言 第九章 轉移指令

修改cs ip的值 範圍在 128 127之間,也就是說向前轉移最多128位元組,向後127位元組 mov ax,0 b80000 對應機器碼 jum short s eb03 兩位元組 這裡的eb是jum的機器碼,03指的ip是向下移動2位元組,這裡的03我們就稱為轉移位移,一般用補碼表示,有負數...