第九章.md

第九章 转移指令的原理

offset

1567217374028

start : mov ax, offset start


jmp

1567217694193

  • 1567217816106
mov jmp short s ; 机器码 `EB 03`,03表示向后跳转3个字节大小
mov ax, 12 ; 机器码 3位
s: mov ax, ax

cpu不需要目的地址实现对IP的修改

由上可知:

1567218560330

  • 1567218667133

  • jmp far ptr 标号

    段间转移(远转移)

    1567218844488

  • 1567218978334

  • jmp在内存中的转移

    1. jmp word ptr 内存单元地址 jmp word ptr ds:[0]

    2. jmp dword ptr 内存单元地址

      1567219244319

      1567219309805


jcxz指令

1567219530630

指令jcxz 标号相当于:

((cx) == 0) ? jmp short 标号: continue;


loop指令

所有循环指令都为短转移,所对应的机器码为偏移地址,不是目的地址,对ip修改范围-128 ~ +127

while ((cx) != 0)
{
(cx) = (cx) - 1;
ip = ip + 8位指令;
}

根据位移距离转移的目的

为方便程序段在内存中的浮动装配,因为偏移距离可以使程序在任意内存单元都可执行,而固定地址会导致内存限制

本文作者:nsfoxer

本文链接:https://www.cnblogs.com/nsfoxer/p/16317598.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   nsfoxer  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起