51系列單片機的尋址方式


轉自:http://www.dwenzhao.cn/profession/mcu/mcu51xunzhi.html

 

AT89C51單片機能直接認識和執行的機器指令有255條,有7種尋址方式,即立即尋址、直接尋址、寄存器尋址、寄存器間接尋址、變址尋址、相對尋址和位尋址。

1. 直接尋址:

指令中直接給出參與操作的數據的地址,該地址一般用direct表示。

匯編指令:MOV A,direct

該指令的功能是將片內RAM地址direct單元中的內容(參與操作的數據)傳送到累加器A中,雙字節指令。

2. 立即尋址:

指令中直接給出參與操作的數據,稱立即數,用data表示。在匯編語言中,為標明立即數,為data加前綴”#”。立即數可以是8位和16位二進制數,分別用#data和#data16表示。

匯編語言指令:MOV A,#data

該指令將立即數data傳送到累加器A中,雙字節指令。

3. 寄存器尋址:

參與操作的數據存放在寄存器中,匯編指令中直接以寄存器名來表示參與操作的數據地址,寄存器包括工作寄存器R0~R7、累加器A、AB、數據指針DPTR和位運算寄存器C。

匯編語言指令:MOV A,Rn ;n=0~7

該指令將Rn中的內容傳送到累加器A中,單字節指令。

4. 寄存器間接尋址:

寄存器間接尋址為二次尋址,第一次尋址得到寄存器的內容為(Ri)或(DPTR),第二次尋址是將第一次尋址得到的寄存器內容作為地址,並在其中存、取參與操作的數據。匯編語言中,寄存器前綴@是寄存器間接尋址的標志,有@Ri、@DPTR等。

匯編語言指令:MOV A,@Ri ;i=0、1

該指令是將Ri中的內容作為地址,再將該地址中的內容傳送到累加器A中,單字節指令。

5. 變址尋址:

間接尋址由兩個寄存器提供。若由A、PC提供,在匯編語言指令中尋址地址表示為@A+PC;若由A和DPTR提供,在匯編語言指令中尋址地址為@A+DPTR。其中,PC或DPTR被稱為基址寄存器,A被稱為變址寄存器,基址與變址相加為16位無符號加法。若變址寄存器A中內容加基址寄存器DPTR(或PC)中內容時,低8位有進位,則該進位直接加到高位,不影響進位標志。因變址尋址指令多用於查表,故常稱為查表指令。

匯編語言指令:MOVC A,@A+DPTR

該指令將DPTR中的內容加上A中的內容作為地址,再將該地址中的內容傳送到累加器A中,單字節指令。

6. 相對尋址:

相對尋址是以相對尋址指令的下一條指令的程序計數器PC的內容為基值,加上指令機器代碼中的“相對地址”,形成新的PC值(要轉移的指令地址)的尋址方式。指令機器代碼中“相對地址”指的是用一個帶符號的8位二進制補碼表示的偏移字節數,其取值范圍為-128~+127,負數表示向后轉移,正數表示向前轉移。

若(PC)表示該指令在ROM中的首地址,該指令字節數為2,執行時分兩步操作:(PC)←(PC) +2,(PC)←(PC)+相對地址。第一步完成后,PC中的值為該指令的下一條指令的首地址;第二步完成后,PC中的內容(PC)為轉移的目標地址。所以,轉移的目標地址范圍是該相對尋址指令的下一條指令首址加上-128~—+127字節的地址。

匯編語言指令:SJMP rel

匯編語言相對尋址指令中的”rel”往往是一個標號地址,表示ROM中某轉移目標地址。匯編軟件對該匯編語言指令進行匯編時,自動算出“相對地址”並填入機器代碼中,應將”rel”理解為“帶有相對意義的轉移目標地址”。

Rel=(PC)+相對尋址指令字節數+相對地址

其中,(PC)為該指令所在ROM中的首地址。

7. 位尋址:

參與操作的數據為“位”,而不是字節,是對片內數據存儲器RAM和SFR中可位尋址單元的位進行操作的尋址方式。

匯編語言指令:ANL C,bit

該指令將bit(位地址)中的內容(0或1)與C中的內容進行與操作,再將結果傳送到PSW中的進位標志C中。

附注. 七種尋址方式及相應的尋址存儲器范圍:

尋址方式

尋址存儲器范圍

立即尋址

程序存儲器ROM

直接尋址

片內RAM低128B,特殊功能寄存器

寄存器尋址

工作寄存器R0~R7,A,C,DPTR,AB

寄存器間接尋址

片內RAM低128B,片外RAM

變址尋址

程序存儲器ROM (@A+DPTR, @A+PC)

相對尋址

程序存儲器ROM(相對尋址指令的下一指令PC值加-128~+127)

位尋址

片內RAM的20H~2FH字節地址中所有的位,可位尋址的SFR


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM