8086 匯編 jmp 指令


8086 匯編 jmp 指令

功能:修改CS、IP的指令、可以通過改變CS、IP中的內容,來控制CPU要執行的目標指令。

背景:一般情況下指令是順序地逐條執行的,而在實際中,常需要改變程序的執行流程。
轉移指令,

  • 可以控制CPU執行內存中某處代碼的指令
  • 可以修改IP,或同時修改CS和IP的指令

轉移方式

jmp指令要給出兩種信息:  

  • 轉移的目的地址
  • 轉移的距離
    • - 段間轉移(遠轉移): jmp 2000:1000
    • - 段內短轉移: jmp short 標號 ; IP的修改范圍為 -128~127,8位的位移
    • - 段內近轉移: jmp near ptr 標號 ; IP的修改范圍為 -32768~32767,16位的位移

遠轉移 far ptr

短轉移 short

短轉移:“jmp short 標號”
功能:(IP)=(IP)+8位位移
原理
(1)8位位移=“標號”處的地址-jmp指令后的第一個字節的地址;
(2)short指明此處的位移為8位位移;
(3)8位位移的范圍為-128~127,用補碼表示;
(4)8位位移由編譯程序在編譯時算出

近轉移 near ptr

近轉移:指令“jmp near ptr 標號”
功能: (IP)=(IP)+16位位移
原理
(1)16位位移=“標號”處的地址-jmp指令后的第一個字節的地址;
(2)near ptr指明此處的位移為16位位移,進行的是段內近轉移;
(3)16位位移的范圍為 -32769~32767,用補碼表示;
(4)16位位移由編譯程序在編譯時算出。

轉移內存單元地址

一、jmp word ptr

 二、jmp dword ptr

案例

1、同時修改CS、IP的內容

; 功能:用指令中給出的段地址修改CS,偏移地址修改IP。
; 格式:jmp 段地址:偏移地址
jmp 2AE3:3

2、僅修改IP的內容

; 功能:用寄存器中的值修改IP
; jmp 某一合法寄存器
jmp ax (類似於 mov IP, ax)

 3、代碼中跳轉行

; jmp 直接跳過 add ax,1 行到 inc ax
   mov ax,0
   jmp short s
   add ax, 1
s: inc ax

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM