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的修改範圍...