汇编中MOV和LEA的区别是什么

如题所述

LEA 指令,可以用MOV 指令代替,但是写法上要注意. 例如把0x114地址单元的地址送给eax, (at&t 书写格式)可以写成 lea edx, dword ptr ds:0x114, 其结果等价于movl $0x114,%edx, LEA 指令在取到内存地址时比较方便,例如汇编指令 lea ignore_int,%edx

ignore_int 是一个地址符号,会被翻译成一个地址值, 它等价于 movl $ignore_int,%edx
但 lea 还有另一种应用场景
例如: lea idt(,%ecx,8), %esi
以idt 为基地址,%ecx*8为偏移,计算这个数值赋值给esi , 显然这是为表格操作而设计的,所以LEA 在处理地址方面还稍显灵活。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-11-07
LEA指令的功能是取偏移地址,例如LEA AX,[1000H],作用是将源操作数[1000H]的偏移地址1000H送至AX;
MOV指令的功能是传送数据,例如MOV AX,[1000H],作用是将1000H作为偏移地址,寻址找到内存单元,将该内存单元中的数据送至AX。本回答被网友采纳
第2个回答  2022-12-04
区别是:传数据,传地址。
相似回答