1. 程式人生 > >組合語言程式設計第九章

組合語言程式設計第九章

一、操作符offset

功能:取得標號的偏移地址。

格式:offset 標號

二、jmp指令

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

需要給出兩種資訊:①轉移的目的地址。  ②轉移的距離(段間轉移、段內短轉移、段內近轉移)

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

jmp short 標號,只是實現段內短轉移。功能:(IP)=(IP)+8位位移。

jmp near ptr 標號,實現段內近轉移,功能:(IP)=(IP)+16位位移。

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

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

功能:(CS)=標號所在段的段地址;

           (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 標號

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