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

 

posted @ 2020-03-14 20:51  星火撩原  阅读(442)  评论(0编辑  收藏  举报