無條件轉移指令jmp:
這種跳轉指令有三種方式:短(short),近(near)和遠(far)。短是指要跳至的目標位址與當前位址前後相差不超過128位元組。近是指跳轉的目標位址與當前位址在用乙個段內,即cs的值不變,只改變eip的值。遠指跳到另乙個**段去執行,cs/eip都要改變。短和近在編碼上有所不同,在彙編指令中一般很少顯式指定,只要寫 jmp 目標位址,幾乎任何彙編器都會根據目標位址的距離採用適當的編碼。遠轉移在32位系統中很少見到,原因前面已經講過,由於有足夠的線性空間,乙個程式很少需要兩個**段,就連用到的系統模組也被對映到同乙個位址空間。
jmp的運算元自然是目標位址,這個指令支援直接定址和間接定址。間接定址又可分為暫存器間接定址和記憶體間接定址。舉例如下(32位系統):
jmp 8e347d60 ;直接定址段內跳轉
jmp ebx ;暫存器間接定址:只能段內跳轉
jmp dword ptr [ebx] ;記憶體間接定址,段內跳轉
jmp dword ptr [00903dec] ;同上
jmp fward ptr [00903df0] ;記憶體間接定址,段間跳轉
014 無條件跳轉指令jmp
l無條件跳轉指令 jmp lgoto 指令 l 優化後的指令 l標誌暫存器 psw 1514 1312 111098 7654 3210 ofdf iftf sfzf afpfcf零 標誌標誌暫存器psw 程式狀態字暫存器 psw 標誌暫存器psw是乙個16為的暫存器。它反映了cpu運算的狀態特徵並...
jmp 乙個近跳轉的問題
前天,複習彙編時,看到jmp的short跳轉,跳轉範圍為 128,127 馬上我想到jmp的near跳轉應該為 32738,32767 並且我寫了乙個程式來測試這一想法,程式如下 org 0100h jmp label start section code16 bits 16 label start...
轉移指令jmp和跳轉指令call
以下內容文字描述來自於 王爽老師的 組合語言 教材,建議大家都買一本,哈哈。不是我打廣告,確實人家寫的好,應該支援。我只是附上了自己的和理解而已。只修改ip,稱為段內轉移,如jmp ax 修改cs和ip,稱為段間轉移,如 jmp 1000 0 轉移指令分為 無條件轉移,如jmp 條件轉移 迴圈指令,...