[請益] 89C51暫存器與其位址
不好意思,有個問題想請教各位。
最近看了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)
→
04/22 19:33, , 1F
04/22 19:33, 1F
推
04/22 21:02, , 2F
04/22 21:02, 2F
→
04/23 12:01, , 3F
04/23 12:01, 3F
ASM 近期熱門文章
PTT數位生活區 即時熱門文章