据我所知,我还没有看到任何人接触过这个,所以我使用的是平面汇编器,如果我尝试做类似“lea eax,测试”的事情,它不会工作,但如果我这个“lea eax,[测试]”有效吗? 我遇到过很多例子,我看到人们可以在没有括号的情况下做到这一点,但我不知道这是否可以在平面汇编器上完成,因为我不断收到错误的无效操作数,而且“测试”是一个 dd (double词)。
最后一件事 lea eax,[testing] 和 mov eax,testing 在我的平面汇编器上是等效的。我用 ollydbg 调试器测试了 eax 寄存器,在这两种情况下 eax 都等于地址 00401006。那么在这种情况下它们是等效的吗?
最佳答案
因为 LEA 就像 C 中的“&”,它希望您向它传递一个变量,而不是该变量的地址。在 FASM 中,当您写“[a]”时,您指的是变量“a”,而当您只写“a”时,您指的是它的地址。所以,“lea eax,[a]”和“mov eax,a”的意思完全一样。我希望这会有所帮助。
关于assembly - (汇编 32 位)不能使用没有括号的 lea?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28390407/