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

[复制链接]
3696|8
 楼主| zezy371 发表于 2012-4-29 00:57 | 显示全部楼层 |阅读模式
请问各位老师:我是初学者,有时在写汇编语言程序的时候经常感觉,R寄存器不够用,我知道还有三组R寄存器,实验者用过好几次了都不成功,请问各位大侠怎么用,我只看懂汇编语言,初学者大家不要见笑。
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 | 显示全部楼层
你的程序没错,可以实现寄存器组的切换。
 楼主| zezy371 发表于 2012-4-29 11:52 | 显示全部楼层
但我实际运用当中好像不行,Keil 2编译不能通过
lyjian 发表于 2012-4-29 12:41 | 显示全部楼层
编译不能通过和这些指令没什么关系,是你其他地方有问题
 楼主| zezy371 发表于 2012-4-29 12:48 | 显示全部楼层
是不是上面的R0,和下面的R0冲突,我的意思是说汇编语言中,默认0寄存器组和其他寄存器组的R0,名字是不是相同?
lyjian 发表于 2012-4-29 13:37 | 显示全部楼层
不是冲突
都说了这些指令没什么关系
 楼主| zezy371 发表于 2012-4-29 13:41 | 显示全部楼层
哦,谢谢你8楼
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

241

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部