lea指令
lea指令的解释是:load effective address.
网上有很多解释, 比如知乎高赞汇编语言中mov和lea的区别有哪些? :
lea是“load effective address”的缩写,简单的说,
lea指令可以用来将一个内存地址直接赋给目的操作数,
例如:lea eax,[ebx+8]就是将ebx+8这个值直接赋给eax,
而不是把ebx+8处的内存地址里的数据赋给eax。
而mov指令则恰恰相反,例如:mov eax,[ebx+8]
则是把内存地址为ebx+8处的数据赋给eax。
说的没错, 可是仍旧是没有解释为什么用mov就不行, 比如:
lea eax, [ebx+8]; 将ebx+8这个值直接赋给eax
难道不等价与:
mov eax, ebx+8;
其实,这才是初学者真正想问的问题.
原因也很搞笑: mov指令不支持这样的格式.
上面的例子中, 源操作数”ebx + 8” is invalid.