首页 > 解决方案 > 确定目的地(寄存器名称或地址)和值

问题描述

mov eax 0x8000 

mov ebx 0x10000

lea esp, [ebx+eax*2]

在这里,我知道目的地是 esp。我也知道 LEA(加载有效地址)在这种情况下表现得像移动。但我不确定存储在这个寄存器中的值。我是这样看的:

0x8000 * 2 = 0x80000

0x20000 + 0x10000 = 0x200000

所以价值是:

[0x200000]

我对吗?

标签: assemblyx86

解决方案


检查你的算术,但一般来说,你是对的。您正确理解 x86 LEA 指令。

x86 LEA 指令不会取消引用它计算的地址。也就是说,LEA 不去该地址;相反,LEA 只是计算地址以供另一条指令稍后使用。


推荐阅读