暫存器間接定址

暫存器間接定址

暫存器間接定址是將指定的暫存器內容為地址,由該地址所指定的單元內容作為運算元。MCS-51規定R0或R1為間接定址暫存器,它可定址內部RAM低位地址的128個位元組單元內容。還可採用數據指針(DPTR)作為間接定址暫存器,定址外部數據存儲器的64K位元組空間,但不能用本定址方法定址特殊功能暫存器。

基本介紹

  • 中文名:暫存器間接定址
  • 屬於:一種指令定址方式
  • 記憶體放運算元的地址
  • 符號:“@”。
  • 領域:彙編語言
概述,功能,執行過程,語言描述方法,

概述

單片機的一種指令定址方式,暫存器間接定址方式中,暫存器記憶體放的是運算元的地址,而不是運算元本身,即運算元是通過暫存器間接得到的,因此稱為暫存器間接定址

功能

運算元放在RAM某個單元中,該單元的地址又放在暫存器R0或R1中。 如果RAM的地址大於256,則該地址存放在16位暫存器DPTR(數據指針)中,此時在暫存器名前加@符號來表示這種間接定址。如MOV A,@ R0。其它還有變址定址、相對定址、位定址等。如用單片機控制溫度時,時時需要將給定的控制溫度(如20℃)減去環境溫度,而環境溫度時時有變化,顯然無法在程式指令中給出,只有通過一定方式,將其送入某個輸入/輸出口,再存放在某個暫存器中,這就必須用到暫存器定址。又如要進行算術運算,要計算每班學員各科成績的平均值,如果把每個學員的各科都編一個程式,在程式中直接給出該學員各科成績,再求平均值,顯然太麻煩。這裡可以編一個求平均成績的通用程式,把每位學員的成績送入存貯器的各個單元中,這時可採取直接定址,所以,定址方式越多,編製程序就越方便、靈活,適用範圍就越廣。

執行過程

例如,設將內部RAM的65H單元內容(47H)送A,可執行指令:MOV A,@R0,其中R0內容為65H
指令的執行過程為:當程式執行到本指令時,就以指令中所指定的工作暫存器R0的內容(65H)為指針,將內部數據存儲器65H單元的內容(47H)送累加器A。

語言描述方法

暫存器的間接定址需要以暫存器符號的形式來表示,且在暫存器名稱前面加上間接定址符號“@”。例如指令MOV A,@R0就使用了暫存器間接定址方式,這條指令的意義為將地址指針R0指向的內部數據存儲器單元中的數據送入累加器A中.
假設R0中內容為30H,則此指令的功能是以R0暫存器的內容30H為地址,把內部RAM 30H單元中的內容傳送給累加器A。
8051規定,採用R0、R1 DPTR作為間接定址暫存器,可定址片內數據存儲器RAM的低128B單元和片外數據存儲器的低256單元。
採用DPTR作間址暫存器,可定址片外數據存儲器的整個64KB地址空間堆疊指針SP用於指示堆疊操作的地址,因此,PUSH和POP指令也是暫存器間接定址

相關詞條

熱門詞條

聯絡我們