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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?