assembly - 在汇编中使用 ds 和 [ ] 进行 jmp
问题描述
您好,我想了解下面的这段代码,如果您能向我解释一下,我将不胜感激:
jmp ds:off_100011A4[edi*4]
为什么使用这个“ds”和这个off_100011A4?以及下面的代码是什么意思:
off_100011A4 dd offset loc_10001125
dd offset loc_10001125
dd offset loc_1000113A
dd offset loc_1000112C
dd offset loc_10001133
dd offset loc_1000113A
解决方案
该指令是无条件跳转到一个地址。该地址是通过取 EDI 寄存器的内容并乘以 4 来计算的。乘法是因为 4 是 x86 平台上指针的大小。
DS 表示偏移量是指数据段。指定数据段,意味着前面提到的计算偏移量与数据段的基本偏移量相加。数据段表示存储用户变量的位置。
推荐阅读
- rest - 在 ExtJS 中使用 Rest URL 中的 DataFields 来访问 Context.io API
- node.js - React js中的页面刷新错误“未指定默认引擎且未提供扩展名”后
- javascript - 如果路由不存在,则反应路由器添加条件
- laravel - 调用未定义的方法 Illuminate\Database\Query\JoinClause::whereRaw()
- elasticsearch - ES查询忽略时间范围过滤器
- java - Selenium Grid - 无法创建 Chrome 进程
- latex - 尝试将 Jupyter Notebook 转换为 PDF 幻灯片
- jquery - 在 HTML 中查找链接以查看是否与数组匹配
- spring - 具有长时间运行请求的 Spring Boot 连接池
- excel - 为什么使用excel vba时日期没有以正确的格式粘贴