汇编学习笔记(二):转移指令

本文详细介绍了汇编语言中的转移指令,包括 jmp、jcxz、loop、ret 和 retf、call 指令,以及它们的不同用法和应用场景。重点讲解了短转移、远转移以及如何通过这些指令进行条件和无条件的代码跳转。
摘要由CSDN通过智能技术生成

章节目录

  1. 转移指令原理
  2. jmp 指令
  3. jcxz 指令
  4. loop 指令
  5. ret 和 retf 指令
  6. call 指令
  7. call+ret

作者能力有限, 如果您在阅读过程中发现任何错误, 还请您务必联系本人,指出错误, 避免后来读者再学习错误的知识.谢谢!

本文中所有程序均在DOSBox下使用MASM, LINK编译运行

转移指令原理

转移指令是可以控制 CPU 执行内存中某处代码的指令. 而 CPU 执行内存中哪处的指令是由 CS 和 IP 寄存器中的决定的. 因此, 转移指令是通过修改 CS 和 IP 寄存器的值来控制 CPU 对指令的执行的.

只修改 IP 的转移行为称为 段内转移.
同时修改 CS 和 IP 的转移行为称为 段间转移.

由于转移指令对 IP 的修改范围不同, 段内转移又分为: 短转移和近转移.
短转移: 对 IP 修改范围为 -128 ~ 127.
近转移: 对 IP 修改范围为 -32768 ~ 32767.

jmp 指令

jmp为无条件转移指令, 可以修改 IP 或者同时修改 CS 和 IP.

jmp short 标号

这条指令完成段内短转移. 对 IP 的修改范围为:-128 ~ 127. 执行完该指令之后, CS 的值不变, IP 指向标号在段中的偏移地址.

示例:

这里写图片描述

在上面程序中我们通过 jmp short s 将 IP 指向标号 s 的偏移地址. 当程序执行到 jmp 时, 会直接跳转到 s 处, 从 s 处继续往下执行.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值