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

posted on 2011-11-04 15:49  锅子  阅读(696)  评论(0编辑  收藏  举报