作者icetofux (豆腐)
看板ASM
标题[请益] 89C51暂存器与其位址
时间Tue Apr 22 15:17:39 2008
不好意思,有个问题想请教各位。
最近看了89C51的记忆体配置图,发现一件事,当RS1=0、RS0=0时(也就是使用暂存器库
RB0)时,R0於记忆体上的位址是00H。
我想验证这个说法,於是作出以下测试:
CODE-1:
ORG 00H
CLR RS0
CLR RS1
MOV R0,
#10101010B
END
CODE-2:
ORG 00H
MOV 00H,
#10101010B
END
然後观察两个CODE的R0,发现於执行结束时,R0皆为10101010B,并且证明可以直接
从位址存取暂存器。
然後我就想到两个问题:
1.这个R0的位址00H跟我们程式一开始所写的ORG 00H有关系吗?如果有,为什麽程式
要从R0开始呢?
2.我想利用假指令EQU来定义所有暂存器库的暂存器,如下:
R_0 EQU 00H ;RB0的R0
R_1 EQU 01H ;RB0的R1
R_2 EQU 02H ;RB0的R2
.
.
.
R_30 EQU 1EH ;RB3的R6
R_31 EQU 1FH ;RB3的R7
使用暂存器时,改用R_0、R_1...R_31等,这样使用不同暂存器库中的暂存器时,就
可以省下操作RS0跟RS1的两个动作的指令周期了,这样对吗?
以上,先谢谢大家的帮忙。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.67.181.137
※ 编辑: icetofux 来自: 203.67.181.137 (04/22 17:44)
1F:→ m9556:8051初始值~Reset之後预设到RS0=RS=0,看书会讲初始状态~ 04/22 19:33
2F:推 ruemann:操作 Rn 会比操作 R 快一些 04/22 21:02
3F:→ icetofux:谢谢两位,我了解了^^ 04/23 12:01