一、操作符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我們就稱為轉移位移,一般用補碼表示,有負數...