明明白白你的'芯'-8051中Rx与ARx概念简介

最近工作关系,要重新了解一下风靡了数十年的8051芯片代码,其中涉及到了Rx和ARx。对于ARx这个概念还是头次接触,真是一头雾水,翻遍百度与谷歌竟然无法找到一个Rx和ARx比较清晰明了的说明,难道8051就被这样无情的淘汰了?让俺是倍感失望,唉声叹气之余只得自力更生,重新翻了下相关手册,又写了些测试代码,算是搞明白这两种寄存器的大概意思,共享出来,希望51单片机的相关工作人员从中受益。
8051的寄存器存储在ram中最底端的128个字节中。其中地址0-31存储4组R0-R7通用寄存器。默认为第一组,可以通过psw标志寄存器中的3,4位进行配置使用其它三组寄存器。同样的道理,通过using n,n可以是0-3来选择使用哪一组ARx寄存器。


而对于我们使用者来说

不论是Rx还是ARx都只不过是个符号而已,最后通过编译器会实际指向到芯片中ram区域中的某一个地址的。现在是不是觉得看的这些枯燥描述像文字游戏感觉有些晕有些累。那好吧,让咱们来做个测试程序并用图示来进一步形象的说明它吧。我们先通过using 0-3来改变ARx寄存器的地址,然后改变AR0的值为1和2。而对于Rx则只让它留在bank0,但我们每次还是修改R0的值为1和2,和AR0一样。结果如何呢,像下图一样绿色的部分为AR0四次的变化情况,而R0四次变化的情况则始终在地址0上。




第二轮我们做相反的测试,通过配置psw的3,4位,来选择Rx为bank0-bank4,而用using 0固定使ARx在bank0上。这回四次测试的结果也相反,R0的 变化为绿色,而AR0的变化四次都在地址0上。如下所示:



整个代码如下:

$NOMOD51
NAME test

codefunction1 segment code


public testfunction

                    
              rseg codefunction1
    using 0
testfunction:

;change AR0 from bank0 to bank3,but let R0 stay bank0

;更改ARx为第一组寄存器

using 0
mov r0,#1
mov r0,#2
mov ar0, #1
mov ar0, #2

;更改ARx为第二组寄存器

using 1

mov r0,#1
mov r0,#2
mov ar0, #1
mov ar0, #2

;更改ARx为第三组寄存器


using 2
mov r0,#1
mov r0,#2
mov ar0, #1
mov ar0, #2

;更改ARx为第四组寄存器


using 3
mov r0,#1
mov r0,#2
mov ar0, #1
mov ar0, #2
;change R0 from bank0 to bank3,but let AR0 stay bank0
using 0

;更改Rx为第一组寄存器


clr psw.4
clr psw.3
mov r0,#1
mov r0,#2
mov ar0, #1
mov ar0, #2
clr psw.4
setb psw.3

;更改Rx为第二组寄存器


mov r0,#1
mov r0,#2
mov ar0, #1
mov ar0, #2
setb psw.4
clr psw.3

;更改Rx为第三组寄存器


mov r0,#1
mov r0,#2
mov ar0, #1
mov ar0, #2
setb psw.4
setb psw.3

;更改Rx为第四组寄存器


mov r0,#1
mov r0,#2
mov ar0, #1
mov ar0, #2

ret



end


最后总结一下:
对于Rx,ARx的理解,不要只是局限在手册上的当前地址和绝对地址什么的概念。只要把它们理解成指向芯片中低端ram区的指针就好。而移动这个指针的方法呢,Rx是通过修改psw的3,4位,ARx是通过使用using 0汇编指令。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值