9 轉移指令的原理

2021-09-06 07:12:57 字數 3230 閱讀 4247

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

2.8086cpu的轉移行為有以下幾種:

(1)只修改ip時,稱為段內轉移。例如:jmp ax

(2)同時修改cs和ip時,成為

段間轉移。例如:jmp 1000:0

3.由於轉移指令對ip值修改範圍的不同,

段內轉移又分為:短轉移

近轉移

(1)短轉移ip的修改範圍是

-128~127

(2)近轉移ip的修改範圍是-32768~32767

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

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

(2)條件轉移指令

(3)迴圈指令(如:loop)

(4)過程

(5)中斷

這些轉移指令的前提條件可能不同,但轉移的基本原理是相同的。

5.操作符offset是乙個偽指令,它的功能是取得標號的偏移位址。

案例:將s處的一條指令複製到s0處

assume cs:codesg

codesg segment

s: mov ax,bx         ;mov ax,bx佔兩個位元組

mov si,offset s   ;得到標號s所在的偏移位址賦值給si

mov di,offset s0  ;得到標號s0所在的偏移位址賦值給di

mov ax,cs:[si]

mov cs:[di],ax     

s0: nop               ;nop佔乙個位元組

nopcodesg ends

end

6.jmp為無條件轉移,可以只修改ip,也可以同時修改cs和ip的值

jmp指令要給出兩個資訊:

(1)轉移的目的位址。

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

7.jmp short 標號**到標號處執行)

這種指令實現的是

段內短轉移。jmp指令中的"標號"是**段中的標號,指明了指令要轉移的目的地,轉移指令結束,cs:ip指向標號處的指令。

8.cpu在執行jmp指令時並不需要指明轉移的目標位址。

9.在「jmp short 標號「指令所對應的機器碼中,並不包含轉移的目的位址,而包含的是轉移的位移。

10."jmp short 標號" 的功能是:(ip)=(ip)+8位位移

(1)8位位移=標號處的位址-jmp指令後的第乙個位元組的位址。

(2)short 指明此處的位移是8位

(3)8位位移的的範圍為-128~127,用補碼表示。

(4)8位位移由編譯程式編譯時算出。

11.jmp near ptr 標號 表示段內近轉移

12."jmp near ptr 標號"的功能是:(ip)=(ip)+16位位移

(1)16位位移=標號處的位址-jmp指令後的第乙個位元組的位址。

(2)near ptr 指明此處的位移是16位,進行段內近轉移。

(3)16位位移範圍是-32768~32767,用補碼表示。

(4)16位位移由編譯程式在編譯時算出。

13."jmp far ptr 標號"實現的是段間轉移,又稱遠轉移。功能如下:

(cs)=標號所在段的段位址;(ip)=標號所在段的偏移位址。

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

14.轉移位址在記憶體中的jmp指令有以下幾種:

(1)jmp

wordptr 記憶體單元位址(

段內轉移

目的偏移位址

記憶體單元位址可以用定址方式的任意格式給出。

比如,下列指令:

mov ax,

0013h

mov ds:[

0],ax

jmp word

ptrds:[

0](2)jmp

dwordptr 記憶體單元位址(

段間轉移

高位址處放著轉移的

目的段位址

低位址處放著轉移的目的位址的

偏移位址

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

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

記憶體單元位址可以用定址方式的任意格式給出。

比如,下列指令:

mov ax,

0123h

mov ds:[

0],ax

mov word

ptrds:[

2],0

jmp dword

ptrds:[

0]執行後,(cs)=0,(ip)=0123h,cs:ip指向0000:0123

15.jcxz指令為有條件轉移,所有有條件轉移指令都是短轉移

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

當cx<>0時,什麼也不做(程式下下執行)

16.loop指令是迴圈指令,所有的迴圈指令都是短轉移

指令格式:loop 標號((cx)=(cs)-1,如果(cx)<>0,轉移到標號出執行)

當cx=0時,什麼也不做(程式下下執行)

17.根據位移進行轉移是為了方便程式段在記憶體中的

浮動裝配

18.根據位移進行轉移的指令,它們的轉移範圍受到轉移位移的限制,如果在源程式中出現了轉移範圍超界的問題,在編譯的時候編譯器將報錯。

9 轉移指令的原理

1 可以修改ip,或同時修改cs和ip的指令統稱為轉移指令。概括的講,轉移指令就是可以控制cpu執行記憶體中某處 的指令,8086cpu的轉移行為有兩種 1 只修改ip時,稱為段內轉移,比如 jmp ax 2 同時修改cs和ip時,稱為段間轉移,比如 jmp 1000 0 段內轉移又分為 1 短轉移...

彙編 (七)轉移指令原理

轉移指令 可以修改ip或同時修改cs和ip的指令。概括講,就是可以控制cpu執行記憶體中某處 的指令。8086cpu轉移行為 根據轉移指令對ip的修改範圍不同,段內轉移分為 短轉移,ip修改範圍為 128 127 近轉移,ip修改範圍為 32768 32767 8086cpu轉移指令分為以下幾類 1...

彙編09 轉移指令的原理

可以修改ip,或同時修改cs和ip的指令統稱為轉移指令。轉移行為有很多種不同的分類方法 根據只修改ip和同時修改cs和ip,可以分為段內轉移 jmp ax 和段間轉移 jmp 1000 0 根據指令對ip的修改範圍不同,段內轉移又分為短轉移 ip的修改範圍為 128 127 和近轉移 ip的修改範圍...