打印

MOV A Rn和MOV A @Ri 能这样理解吗

[复制链接]
5050|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wjcy131421|  楼主 | 2008-4-25 12:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
MOV A Rn 中Rn里是一个数据
MOV A @Ri中Ri里是一个地址

那Rn和Ri应该都是寄存器  ,有什么差别呢????

还有寄存器是既可以存数据也可以存地址吗?但是从另一个角度来看,地址和数据在寄存器中都是一个8位的二进制数,只是意义不同?不知道可不可以这样理解?

初学单片机,被这些东西搞糊了,听听大家的意见~!~

相关帖子

沙发
maychang| | 2008-4-25 16:20 | 只看该作者

Rn中n为0~7,Ri中i为0~1。
可以这样理解。

使用特权

评论回复
板凳
iC921| | 2008-4-26 15:31 | 只看该作者

楼主呢?我能不能跟你一起学?

没问题吧

使用特权

评论回复
地板
HWM| | 2008-4-26 19:34 | 只看该作者

仔细看一下MCS-51的指令系统就清楚了

MOV A,Rn

上面指令是将Rn内的内容(数据)复制到累加器A中,其中n在指令中占三位,故可以有八种取值(0,1,...,7)。

MOV A,@Ri

上面指令是将由Ri内容(地址)所指的RAM中的内容(数据)复制到累加器A中,其中i在指令中占一位,故只有两种取值(0,1)。

就寻址方式来说,Rn为寄存器寻址,即操作数就是寄存器Rn中的内容;@Ri为寄存器间接寻址,即操作数是由寄存器Ri内容作为地址再去取RAM中的内容。

使用特权

评论回复
5
iC921| | 2008-4-26 20:00 | 只看该作者

慢慢来哈

@Ri与RAM是什么关系呢?为什么i用两个值就可以了。这里的R是什么?

我丢这玩意时间长了。就这样趁机慢慢恢复点**吧,嘿嘿……

-------------------------------------------------------------
上面指令是将由Ri内容(地址)所指的RAM中的内容(数据)复制到累加器A中,其中i在指令中占一位,故只有两种取值(0,1)。

就寻址方式来说,Rn为……;@Ri为寄存器间接寻址,即操作数是由寄存器Ri内容作为地址再去取RAM中的内容。

使用特权

评论回复
6
HWM| | 2008-4-26 20:30 | 只看该作者

其实R也是RAM中的一员,不知这样阐述是否能明白

若Ri(i=0,1)的内容是10h,则@Ri就是RAM中地址为10h的那个单元,由此可见在@Ri中Ri存放的是操作数的地址而不是内容。而为何i只能取0和1是因为对于寄存器间接寻址,在MCS-51的机器码设计时只给了一位二进制位,若能给三位就是Rn了。这里的n和i就是用来区别这种差异的。

使用特权

评论回复
7
iC921| | 2008-4-26 23:49 | 只看该作者

明白

只是不知道这种差别有什么意义。

还没有看书。

使用特权

评论回复
8
wjcy131421|  楼主 | 2008-4-29 13:43 | 只看该作者

iC921大哥是强人,别太谦虚了~!~

使用特权

评论回复
9
wjcy131421|  楼主 | 2008-4-29 13:47 | 只看该作者

如此说来

Rn和Ri的差别是由51的程序机器码决定了的 ????

那么当n=0,1和i=0,1时就是同一个寄存器了???

是这样的吗?

使用特权

评论回复
10
maychang| | 2008-4-29 13:49 | 只看该作者

回楼上

是。

使用特权

评论回复
11
yysmcu| | 2008-4-29 19:26 | 只看该作者

好搞

多用用汇编,多看看51指令,以后LZ自然会明白的了

使用特权

评论回复
12
kongliuer| | 2008-4-29 19:56 | 只看该作者

大家解释的都很好 HWM iC921等都是高手

MOV A,Rn

上面指令是将Rn内的内容(数据)复制到累加器A中,其中n在指令中占三位,故可以有八种取值(0,1,...,7)。

MOV A,@Ri

上面指令是将由Ri内容(地址)所指的RAM中的内容(数据)复制到累加器A中,其中i在指令中占一位,故只有两种取值(0,1)。

就寻址方式来说,Rn为寄存器寻址,即操作数就是寄存器Rn中的内容;@Ri为寄存器间接寻址,即操作数是由寄存器Ri内容作为地址再去取RAM中的内容。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

40

主题

318

帖子

0

粉丝