地址對映。在數字晶片中,所謂的“地址”實際上是對內部資源的編碼。在傳統的51微控制器(如AT89C51)中內部定址範圍是0~FFH,共256個地址,但實際上RAM只有128位元組,除了RAM之外CPU還可以訪問各種特殊功能暫存器,這些暫存器分佈在片上的其他位置,如ACC在運算單元模組,TCON、TMOD等在定時器/計數器模組,IE、IP在中斷系統中,這些暫存器既不是RAM,也與RAM沒有任何關係。為了方便訪問,微控制器的設計者們也給這些暫存器關聯了地址,這樣程式設計人員就可以像訪問RAM一樣訪問外設。比如說,TCON關聯的地址是88H,那麼指令MOV 88H #00H就是直接訪問在定時器/計數器模組中的TCON暫存器。而累加器ACC關聯的地址是E0H,那麼指令MOV E0H #FFH就是直接訪問累加器,這和指令MOV A #FFH的效果是一樣的(但兩個指令的二進位制編碼不一樣)。而像有些地址如A3H這些沒有關聯暫存器,也不再RAM的範圍內,就不能訪問,因為微控制器上不存在這樣的物理位置。後來人們想在51的基礎上把內部RAM擴充套件到256位元組(如AT89C52),使得RAM地址範圍是0~FFH,這就與之前的地址衝突了,比如你寫MOV 88H #00H,微控制器怎麼知道你是要訪問RAM中的88H單元還是TCON暫存器呢?於是人們就規定80H~FFH的RAM只能間接定址,特殊功能暫存器只可直接定址。於是乎,MOV 88H #00H就是訪問TCON,而MOV R1 #80H MOV @R1 #00H就是訪問RAM單元。
地址對映。在數字晶片中,所謂的“地址”實際上是對內部資源的編碼。在傳統的51微控制器(如AT89C51)中內部定址範圍是0~FFH,共256個地址,但實際上RAM只有128位元組,除了RAM之外CPU還可以訪問各種特殊功能暫存器,這些暫存器分佈在片上的其他位置,如ACC在運算單元模組,TCON、TMOD等在定時器/計數器模組,IE、IP在中斷系統中,這些暫存器既不是RAM,也與RAM沒有任何關係。為了方便訪問,微控制器的設計者們也給這些暫存器關聯了地址,這樣程式設計人員就可以像訪問RAM一樣訪問外設。比如說,TCON關聯的地址是88H,那麼指令MOV 88H #00H就是直接訪問在定時器/計數器模組中的TCON暫存器。而累加器ACC關聯的地址是E0H,那麼指令MOV E0H #FFH就是直接訪問累加器,這和指令MOV A #FFH的效果是一樣的(但兩個指令的二進位制編碼不一樣)。而像有些地址如A3H這些沒有關聯暫存器,也不再RAM的範圍內,就不能訪問,因為微控制器上不存在這樣的物理位置。後來人們想在51的基礎上把內部RAM擴充套件到256位元組(如AT89C52),使得RAM地址範圍是0~FFH,這就與之前的地址衝突了,比如你寫MOV 88H #00H,微控制器怎麼知道你是要訪問RAM中的88H單元還是TCON暫存器呢?於是人們就規定80H~FFH的RAM只能間接定址,特殊功能暫存器只可直接定址。於是乎,MOV 88H #00H就是訪問TCON,而MOV R1 #80H MOV @R1 #00H就是訪問RAM單元。