作者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