| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 761 人关注过本帖
标题:为什么mov cs:[di],cs[si]不合法?前面已经定义了di和si的偏移地址
只看楼主 加入收藏
赵疯子
Rank: 8Rank: 8
来 自:dream
等 级:蝙蝠侠
威 望:2
帖 子:365
专家分:737
注 册:2013-5-5
结帖率:94.44%
收藏
已结贴  问题点数:20 回复次数:7 
为什么mov cs:[di],cs[si]不合法?前面已经定义了di和si的偏移地址
如题,讲一下原理吧,已经解决了问题,但是不知道为何这样不行,解决的办法是
mov ax,cs:[si]
mov cs:[di],ax
2013-08-25 14:14
lonmaor
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:郑州
等 级:版主
威 望:75
帖 子:2637
专家分:6423
注 册:2007-11-27
收藏
得分:20 
mov ax, word ptr cs:[si]
类型要相符。

从不知道到知道,到知道自己不知道,成长的道路上脚步深深浅浅
2013-08-25 14:42
赵疯子
Rank: 8Rank: 8
来 自:dream
等 级:蝙蝠侠
威 望:2
帖 子:365
专家分:737
注 册:2013-5-5
收藏
得分:0 
回复 2楼 lonmaor
哦,没注意,但是为什么按题目上所说的那样就不合法呢?在C里面应该可以的啊?
比如a[1]=b[1];
2013-08-25 18:03
lonmaor
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:郑州
等 级:版主
威 望:75
帖 子:2637
专家分:6423
注 册:2007-11-27
收藏
得分:0 
这就是汇编的低级之处。

从不知道到知道,到知道自己不知道,成长的道路上脚步深深浅浅
2013-08-25 18:26
赵疯子
Rank: 8Rank: 8
来 自:dream
等 级:蝙蝠侠
威 望:2
帖 子:365
专家分:737
注 册:2013-5-5
收藏
得分:0 
谢谢了
2013-08-25 18:30
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
不 是X86这个架构就不允许用mov移动在两个内存之间移动数据 至于其他架构行不行我就不知道了 反正就不能这么写 这点书上应该是说过的
2013-08-26 16:42
luoage
Rank: 1
等 级:新手上路
帖 子:6
专家分:7
注 册:2013-8-29
收藏
得分:0 
对,两个内存间地址,不允许传递,这是规定.
2013-08-29 16:53
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:0 
以下是引用赵疯子在2013-8-25 18:03:11的发言:

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

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

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-09-05 19:52
快速回复:为什么mov cs:[di],cs[si]不合法?前面已经定义了di和si的偏移地址
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024492 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved