lea和mov指令的区别

memetao 于 2021-04-07 发布

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.