当前位置: 代码迷 >> 汇编语言 >> LEA指令请问一下
  详细解决方案

LEA指令请问一下

热度:2399   发布时间:2013-02-26 00:00:00.0
LEA指令请教一下
查了很多的BAIDU,发现说的都不太一样,所以再来请教一下
我看到一条说:
lea ecx,[eax+0x30]
相当于:
mov ecx,0x30
add ecx,eax

是这样吗?是的话,那么也可以用
mov ecx,0x30+eax 不可以吗?非要用这样的形式?
非常迷惑啊

------解决方案--------------------------------------------------------
数据传送指令 MOV
格式: MOV OPRD1,OPRD2
功能: 本指令将一个源操作数送到目的操作数中,即OPRD1<--OPRD2.
说明: 
1. OPRD1 为目的操作数,可以是寄存器、存储器、累加器.
OPRD2 为源操作数,可以是寄存器、存储器、累加器和立即数.
2. MOV 指令以分为以下四种情况:
<1> 寄存器与寄存器之间的数据传送指令
<2> 立即数到通用寄存器数据传送指令
<3> 寄存器与存储器之间的数据传送指令
<4> 立即数到存储器的数据传送
3. 本指令不影响状态标志位

有效地址传送指令 LEA 
格式: LEA OPRD1,OPRD2 
功能: 将源操作数给出的有效地址传送到指定的的寄存器中.

说明: 
1. OPRD1 为目的操作数,可为任意一个16位的通用寄存器.
OPRD2 为源操作数,可为变量名、标号或地址表达式.
示例: LEA BX,DATA1 
LEA DX,BETA[BX+SI] 
LEA BX BX,[BP],[DI]
2. 本指令对标志位无影响。


用lea,一条指令就可以了
------解决方案--------------------------------------------------------
探讨
查了很多的BAIDU,发现说的都不太一样,所以再来请教一下
我看到一条说:
lea ecx,[eax+0x30]
相当于:
mov ecx,0x30
add ecx,eax

是这样吗?是的话,那么也可以用
mov ecx,0x30+eax 不可以吗?非要用这样的形式?
非常迷惑啊
  相关解决方案