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