mov指令
这个指令是最常用的数据转移指令,表示将原操作数转移到目的操作数,指令的格式为。
mov 目的操作数,原操作数
mov reg/mem,imm
mov reg/mem/seg,reg
mov reg/seg,mem
需要注意的是不能将主存储器的内容传送到主存储器中,不能将立即数直接传送到段寄存器中。
下面举一些例子
mov ax,bx
mov ax,1H
mov [ax],bx
mov ss,bx
mov ax,77H
mov ss,ax
在数据传送指令中两个操作数必须有一个的类型是确定的,如果两个类型都确定必须要两个类型相同否则会出错。
lea指令
lea指令是地址传送指令,表示获取一个变量的地址,和offset相似都可以获取一个变量的偏移地址,但是也是不同的,offset获取地址是在汇编阶段得到的因此使用offset运行速度是比较快的,而lea指令是在运行中获取的地址,下面我们举例说明两者的不同。
mov eax,offset var var是一个变量,这个变量在汇编时这个var的地址是确定的,而这个指令也是在汇编阶段来获取var的地址的,因此可以使用这种方式。
mov eax,offset [ebx+4] 使用这种方式便是错误的,因为[ebx+4]的地址在汇编阶段是不能确定的。
lea eax,[ebx*4+3] 这个指令是正确的,将原操作数的地址存放在eax中。