【原创】汇编指令 lea 和 mov 指令的区别是什么?
问题背景:
lea指令是 load effective address 首字母的缩写简称,这有助于加深我们记忆以及理解其语义:用来将一个内存地址直接赋给目的操作数。假设我们采用的汇编风格是ATT风格。
举个例子:
【0x01】mov eax, [ebp-5] 代表将ebp寄存器指向的位置之后的第5个字节处的内存位置(内存地址)里的数据赋值给eax寄存器,即:
1、首先ebp寄存器永远指向栈基;
2、获取ebp上面的的第5个字节的位置,即得到最新的内存位置假如叫m;
3、获取内存位置m处的数据,然后将这个数据赋值给eax寄存器;
【0x02】lea eax, [ebp55] 代表将ebp寄存器指向的位置之后的第5个字节处的内存位置(内存地址)赋值给eax寄存器,即:
1、首先ebp寄存器永远指向栈基;
2、获取ebp上面的的第5个字节的(内存)位置,即得到最新的内存位置假如叫n;
3、将内存位置n赋给eax寄存器;
版权声明:除非注明,本文由( blogdaren )原创,转载请保留文章出处。