| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1461 人关注过本帖
标题:有关“mov ax,bx”的一些疑问!
取消只看楼主 加入收藏
sxzjw
Rank: 2
等 级:论坛游民
帖 子:32
专家分:21
注 册:2010-5-23
结帖率:57.14%
收藏
已结贴  问题点数:20 回复次数:3 
有关“mov ax,bx”的一些疑问!
在一次编程中,写了一条“mov ax,es”,masm不给通过。老师一看,说寄存器之间不能直接传值。
这个问题就让我很郁闷。

大家知道,cpu寄存器是内存中最快的了,可是显然如果寄存器之间不能传值,那么很多数据传递非要经过主存,速度不还是被降低了?

我的问题有两个:
1。不能出现“mov ax,es”,是masm5.0编译时候的一种不允许语句?还是对于cpu来说,就不存在直接传递两个寄存器值的硬件电路?

2。如果是cpu的问题,这样设计是问什么?
  如果是masm不允许,那这样又是为什么?

期待各位解答!
搜索更多相关主题的帖子: mov ax,bx 疑问 
2010-06-01 13:29
sxzjw
Rank: 2
等 级:论坛游民
帖 子:32
专家分:21
注 册:2010-5-23
收藏
得分:0 
回复 2楼 ONEPROBLEM
版主 是怎么通过的?
能给个版主 使用的原指令吗?我也验证下~
2010-06-01 23:51
sxzjw
Rank: 2
等 级:论坛游民
帖 子:32
专家分:21
注 册:2010-5-23
收藏
得分:0 
回复 3楼 zklhp
好像 不能出现mov ax,es;现在一直很郁闷?那版主用哪个版本能通过?
2010-06-01 23:53
sxzjw
Rank: 2
等 级:论坛游民
帖 子:32
专家分:21
注 册:2010-5-23
收藏
得分:0 
感谢各位的帮助~不过经过我认真的回想和分析,有些想法:
cpu个寄存器之间的值是可以传递的,用这个代码验证,masm是给通过的:
assume cs:code
code segment
 start: mov ax,100
    mov cx,200

    nop
    nop
   
    mov bx,ax
    mov dx,cx
    mov ds,ax
    mov es,cx
        mov bx,cs
        mov es,[bx]


    mov ax,4c00h
    int 21

code ends
end start


但是,不能出现这样的语句:mov es,b800h,也就是说不能直接给段寄存器附数值。这个肯定有错。
解决办法就是先吧值给了ax,再给了b800h。

但有人说  “从基本的cpu工作原理来看,cpu执行“MOV R1,R0”指令,cpu首先要完成的操作是(M->DR(M是主存储器))”。可是masm给通过寄存器之间的传值指令啊?

这是个什么问题?
2010-06-02 12:37
快速回复:有关“mov ax,bx”的一些疑问!
数据加载中...
 
   



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

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