mov 与 lea 区别

mov默认对寄存器值或变量值进行操作,可以从寄存器到寄存器,从立即数到寄存器,从存储单元到寄存器,从立即数到存储单元,从寄存器到存储单元,【从寄存器或存储单元到段寄存器(除CS寄存器),立即数不能值接送段寄存器】

但是注意 
(1) MOV指令中的源操作数绝对不能是立即数和代码段CS寄存器; 
(2) MOV指令中绝对不允许在两个存储单元之间直接传送数据; 
(3) MOV指令中绝对不允许在两个段寄存器之间直接传送数据; 
(4) MOV指令不会影响标志位

对于变量,加不加[]都表示取值;

对于寄存器而言,无[]表示取值,有[]表示取地址。

 

lea是load effective address 的缩写,是取源操作数的偏移地址,并将其传送到目的操作数单元。类似于C语言的取地址符&。

对于变量,其后面的有无[]皆可,都表示取变量地址,相当于指针。

对于寄存器而言,无[]表示取地址,有[]表示取值。

 

例:SI=1000H, DS=1000H, (5100H)=2345H

MOV BX, [SI]; BX为2345H

LEA BX, [SI]; BX为1000H

 

参考:https://blog.csdn.net/fengshh2301/article/details/53327120?locationNum=2&fps=1

你可能感兴趣的:(汇编)