如果我在Ollydbg中逐步调试调试器,我会看到
并注册ESI = 0040855C和EBP = 00000000。
我的问题是我不知道2注册* 8
答案 0 :(得分:3)
MOV - 移动
EAX - 到EAX(通常这将是您刚刚计算的值)
DWORD PTR - 来自
指向的值[DS: - 在数据段中]
[ESI + EBP * 8] - ESI加8倍EBP。
将EAX中的值移动到ESI + EBP * 8指向的地址(ESI加上EBP的8倍,这意味着它是如何编写的)
这可能用于从数组加载数据,其中8用于将计数器(即EBP)按比例放大到存储事物的大小(8字节),ESI包含数据的地址数组的开始。因此,如果EBP为零,则将数据存储在ESI + 0中,如果EBP = 1,则最终存储在ESI + 8等处。
答案 1 :(得分:2)
在正常的INTEL语法中,此指令将值从内存移动到 EAX中。
MOV EAX,DWORD PTR DS:[ESI+EBP*8]
它通常用于从数组中提取值 该阵列位于DS:ESI的存储器中 元素通过EBP索引 标度为8意味着每个元素都是64位长,并且该指令只读低字。