組合語言 轉移指令的原理

2021-09-25 12:47:12 字數 864 閱讀 7165

可以修改ip,或同時修改cs和ip的指令統稱為轉移指令。轉移指令就是可以控制cpu執行記憶體中某處**的指令。

8086cpu的轉移行為有以下幾類:

由於轉移指令對ip的修改範圍不同,段內轉移又分為:短轉移和近轉移

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

這些轉移指令轉移的前提條件可能不同,但是原理是相同的。後面以jmp為例說明原理。

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

mov si,100h

mov ax,offset si   ;mov ax 1000h

jmp指令要給出的兩種資訊:

轉移的目的位址

轉移的距離(段間轉移,段內短轉移,段內近轉移)

jmp short 標號**到標號處執行指令):實現的是段內短轉移,轉移指令結束後,cs:ip應該指向標號處的指令。

cpu在執行jmp指令的時候並不需要轉移的目的位址。而是位移。

jmp short 標號 :功能為(ip)=(ip)+8位位移

jmp near ptr 標號:功能為(ip)=(ip)+16位位移 段內近轉移

far ptr 指令用標號的段位址和偏移位址修改cs和ip

指令格式:jmp 16位reg

功能:(ip)=(16位reg)

(cs)=(記憶體單元位址+2)

(ip)=(記憶體單元位址)

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

相當於:

if ((cx)==0) jmp short 標號;

這幾種彙編指令,它們對ip的修改是根據轉移目的位址和轉移起始位址之間的位移來進行。

轉移範圍受到轉移位移的限制,超過了編譯會報錯。

組合語言 轉移指令的原理

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

組合語言之轉移指令

轉移指令 可以修改ip或同時修改cs和ip的指令統稱為轉移指令。短轉移ip的修改範圍 128 127 近轉移ip的修改範圍 32768 32767 1.操作符offset 例 assume cs codesg codesg segment start mov ax,offset start 相當於 ...

組合語言轉移指令規則彙總

摘要 雖然jmp指令提供了控制轉移,但是它不允許進行任何複雜的判斷。80x86條件跳轉指令提供了這種判斷。條件跳轉指令是建立迴圈和實現其他條件執行語句,如if endif的基本要素。條件跳轉指令檢查乙個或多個標誌位,判斷它們是否匹配某個特殊條件 就像setcc指令 如果標誌匹配成功,該指令就將控制轉...