看板 ASM 關於我們 聯絡資訊
不好意思,有個問題想請教各位。 最近看了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)
m9556:8051初始值~Reset之後預設到RS0=RS=0,看書會講初始狀態~ 04/22 19:33
ruemann:操作 Rn 會比操作 R 快一些 04/22 21:02
icetofux:謝謝兩位,我了解了^^ 04/23 12:01