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