注册 登录
编程论坛 汇编论坛

为什么mov cs:[di],cs[si]不合法?前面已经定义了di和si的偏移地址

赵疯子 发布于 2013-08-25 14:14, 761 次点击
如题,讲一下原理吧,已经解决了问题,但是不知道为何这样不行,解决的办法是
mov ax,cs:[si]
mov cs:[di],ax
7 回复
#2
lonmaor2013-08-25 14:42
mov ax, word ptr cs:[si]
类型要相符。
#3
赵疯子2013-08-25 18:03
回复 2楼 lonmaor
哦,没注意,但是为什么按题目上所说的那样就不合法呢?在C里面应该可以的啊?
比如a[1]=b[1];
#4
lonmaor2013-08-25 18:26
这就是汇编的低级之处。
#5
赵疯子2013-08-25 18:30
谢谢了
#6
zklhp2013-08-26 16:42
不 是X86这个架构就不允许用mov移动在两个内存之间移动数据 至于其他架构行不行我就不知道了 反正就不能这么写 这点书上应该是说过的
#7
luoage2013-08-29 16:53
对,两个内存间地址,不允许传递,这是规定.
#8
yuccn2013-09-05 19:52
以下是引用赵疯子在2013-8-25 18:03:11的发言:

哦,没注意,但是为什么按题目上所说的那样就不合法呢?在C里面应该可以的啊?
比如a[1]=b[1];
        

c 语言这样 也是要借助寄存器的,只是那是编译成汇编的事情了。   
1