[請益] 89C51暫存器與其位址

看板ASM (組合語言)作者 (豆腐)時間16年前 (2008/04/22 15:17), 編輯推噓1(102)
留言3則, 3人參與, 最新討論串1/1
不好意思,有個問題想請教各位。 最近看了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
8051初始值~Reset之後預設到RS0=RS=0,看書會講初始狀態~
04/22 19:33, 1F

04/22 21:02, , 2F
操作 Rn 會比操作 R 快一些
04/22 21:02, 2F

04/23 12:01, , 3F
謝謝兩位,我了解了^^
04/23 12:01, 3F
文章代碼(AID): #183P4LCB (ASM)
文章代碼(AID): #183P4LCB (ASM)