Page 52 -
P. 52
第四章 暫存器與資料記憶體
4-1 累加器
累加器(Accumulator)一般以 A 或 Acc 簡稱,是使用頻率最高的暫存器,許多算
數運算、邏輯運算及資料搬移等工作,都需要藉由累加器來完成。
4-2 工作暫存器
在 8051 中共有 8 個 8 位元(bits)工作暫存器,分別為 R0、R1、R2、R3、R4、R5、
R6 及 R7。這些工作暫存器可用以輔助累加器在運算上的不足,如儲存即將被處理的資
料,或已完成的結果及迴圈數值控制等。
由於在撰寫較複雜程式,尤其是呼叫副程式時,為了避免工作暫存器之內容遭到破
壞,在 8051 中提供四個暫存器庫,分別為 RB0、RB1、RB 及 RB3,每一個暫存器庫均
有個 8 位元工作暫存器,並可經由工作暫存器 R0~R7 來存取,但程式執行中只能選擇
四個暫存器庫中的一個暫存器來使用,而其選擇方法則可透過設定 RS1 與 RS0 此兩位
元來選擇,其設定如下:
RS1 RS0 暫存器庫 位址
0 0 RB0 00H~07H
0 1 RB1 08H~0FH
1 0 RB2 10H~17H
1 1 RB3 18H~1FH
當 8051 選擇使用 RB0 時,程式中存取 R0~R7 暫存器的值,實際上是在存取資料
記憶體位址 00H~07H 的內容;而使用 RB1 時,程式中存取 R0~R7 暫存器的值,實際
上是在存取資料記憶體位址 08H~0FH 的內容;而使用 RB2 時,程式中存取 R0~R7
暫存器的值,實際上是在存取資料記憶體位址 10H~17H 的內容;而使用 RB3 時,程式
中存取 R0~R7 暫存器的值,實際上是在存取資料記憶體位址 18H~1FH 的內容。所以
在複雜程式中,主程式與副程式可分配使用不同暫存器庫,即可避免暫存器的值被破壞。
4-3 輸出/輸入埠暫存器
8051 具有 4 個 8 位元(bits)的輸出輸入埠,經由這四個輸出輸入埠與外界進行資料
交換因此在 8051 內部用個暫存器來記錄輸出/輸入接腳的狀態,分別為資料記憶體
80H、90H、A0H、B0H 等四個位元組(byte),並一輸出/輸入埠分別命名為 P0、P1、P2
及 P3。當軟體程式對輸出輸入埠 P0~3 作輸出/輸入的動作,即是對 80、90、AH 及 0
等四個位元組作寫入/讀出的動作。