組合語言程式設計第九章
一、操作符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 標號
九、根據位移進行轉移的意義