首页 > 解决方案 > 在汇编中使用 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

标签: assemblyx86jump-table

解决方案


该指令是无条件跳转到一个地址。该地址是通过取 EDI 寄存器的内容并乘以 4 来计算的。乘法是因为 4 是 x86 平台上指针的大小。

DS 表示偏移量是指数据段。指定数据段,意味着前面提到的计算偏移量与数据段的基本偏移量相加。数据段表示存储用户变量的位置。


推荐阅读