打印

请问各位大侠R1R2R3寄存器组怎么用

[复制链接]
2705|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zezy371|  楼主 | 2012-4-29 00:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
lyjian| | 2012-4-29 07:21 | 只看该作者
51有四组寄存器(不是三组),每组8个(够多了),通过PSW里的RS0和RS1位切换。
不要什么数据都放在寄存器,这样的话当然会不够用

使用特权

评论回复
板凳
zezy371|  楼主 | 2012-4-29 09:28 | 只看该作者
我知道是四组,默认的没说,其他的三组在应用时,在汇编程序下怎么切换,切换后用什么表示R,比如
MOV    A,R0这条语句,如果切换到第二组寄存器组时,是不是这样应用呢?我先写个大家看看对吗,欢迎指正
谢谢   比如CLR       RS0                  ;准备切换寄存器2区
                 SETB     RS1                  ;切换寄存器2区
                 MOV      R0,#0DFH        ;给寄存器2区的R0赋值
                 CLR       RS0                  ;要切换回寄存器0区
                 CLR       RS1                  ;切换回了
                 MOV      R0,#0CBH     ;给0区的R0寄存器赋值

使用特权

评论回复
地板
ygzjyh| | 2012-4-29 11:19 | 只看该作者
你的程序没错,可以实现寄存器组的切换。

使用特权

评论回复
5
zezy371|  楼主 | 2012-4-29 11:52 | 只看该作者
但我实际运用当中好像不行,Keil 2编译不能通过

使用特权

评论回复
6
lyjian| | 2012-4-29 12:41 | 只看该作者
编译不能通过和这些指令没什么关系,是你其他地方有问题

使用特权

评论回复
7
zezy371|  楼主 | 2012-4-29 12:48 | 只看该作者
是不是上面的R0,和下面的R0冲突,我的意思是说汇编语言中,默认0寄存器组和其他寄存器组的R0,名字是不是相同?

使用特权

评论回复
8
lyjian| | 2012-4-29 13:37 | 只看该作者
不是冲突
都说了这些指令没什么关系

使用特权

评论回复
9
zezy371|  楼主 | 2012-4-29 13:41 | 只看该作者
哦,谢谢你8楼

使用特权

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

本版积分规则

27

主题

241

帖子

0

粉丝