MOV 大家在前面都见识过了。。其实用高级语言来说就是 = 的意思,赋值,不是==哦。
MOV指令是最基本的操作寄存器方式,主要注意4点。
1.目的和源,尺寸必须一致
mov eax,ax
mov ax,ah
mov al,eax
这些都是错误的!尺寸一致,指的是位数,即,大家都是32位,那就OK。
2.目的和源,不能都是内存操作数,
如果真想来回捣鼓 2个 内存数,那就用数据寄存器做中转站吧。
记得初学编程的时候,喜欢用temp 做临时变量,然后替换2变量,把temp 用数据寄存器就OK了。
3.CS,EIP,IP,不能直接用MOV操作,具体如何改变他们的值,以后再说。
4.立即数不能直接放段寄存器
解释下,何为立即数:你看到这个东东,一看就知道是一个值,那就是立即数了,比如80h,90h(80后,90后,哈哈,锅子差2月就是80后了。。)
mov ds,1000h
这是错的!,怎么操作 请看上面第2条
MOV还有2个扩展的 MOVSX和MOVZX,目前不太用了哦,有兴趣的可以查查相关。
XCHG指令,除了 不接受立即数,其他和MOV操作基本相同。我们看上面第2点,童鞋们一定想,能不能用XCHG实现 2内存交换呢,回答当然是肯定的!
mov ax,val1
xchg ax,val2
mov val1,ax