80C51有七種尋址方式:
1、立即尋址,尋址空間為ROM;
2、直接尋址,尋址空間為片內(nèi)RAM的低128B和特殊功能寄存器;
3、寄存器尋址,尋址空間為A、B、DPTR、CY、通用工作寄存器等;
4、寄存器間接尋址,片內(nèi)RAM低128B、片外RAM;
5、相對尋址,尋址空間為ROM;
6、變址尋址,尋址空間為ROM;
7、位尋址,尋址空間為片內(nèi)RAM低128B的位尋址區(qū)的128個(gè)位,其字節(jié)地址為20H~2FH;以及部分可以位尋址的特殊功能寄存器。
參考:AT89C51單片機(jī)能直接認(rèn)識和執(zhí)行的機(jī)器指令有255條,有7種尋址方式,即立即尋址、直接尋址、寄存器尋址、寄存器間接尋址、變址尋址、相對尋址和位尋址。
1. 直接尋址:
指令中直接給出參與操作的數(shù)據(jù)的地址,該地址一般用direct表示。
匯編指令:MOV A,direct
該指令的功能是將片內(nèi)RAM地址direct單元中的內(nèi)容(參與操作的數(shù)據(jù))傳送到累加器A中,雙字節(jié)指令。
2. 立即尋址:
指令中直接給出參與操作的數(shù)據(jù),稱立即數(shù),用data表示。在匯編語言中,為標(biāo)明立即數(shù),為data加前綴”#”。立即數(shù)可以是8位和16位二進(jìn)制數(shù),分別用#data和#data16表示。
匯編語言指令:MOV A,#data
該指令將立即數(shù)data傳送到累加器A中,雙字節(jié)指令。
3. 寄存器尋址:
參與操作的數(shù)據(jù)存放在寄存器中,匯編指令中直接以寄存器名來表示參與操作的數(shù)據(jù)地址,寄存器包括工作寄存器R0~R7、累加器A、AB、數(shù)據(jù)指針DPTR和位運(yùn)算寄存器C。
匯編語言指令:MOV A,Rn ;n=0~7
該指令將Rn中的內(nèi)容傳送到累加器A中,單字節(jié)指令。
4. 寄存器間接尋址:
寄存器間接尋址為二次尋址,第一次尋址得到寄存器的內(nèi)容為(Ri)或(DPTR),第二次尋址是將第一次尋址得到的寄存器內(nèi)容作為地址,并在其中存、取參與操作的數(shù)據(jù)。匯編語言中,寄存器前綴@是寄存器間接尋址的標(biāo)志,有@Ri、@DPTR等。
匯編語言指令:MOV A,@Ri ;i=0、1
該指令是將Ri中的內(nèi)容作為地址,再將該地址中的內(nèi)容傳送到累加器A中,單字節(jié)指令。
5. 變址尋址:
間接尋址由兩個(gè)寄存器提供。若由A、PC提供,在匯編語言指令中尋址地址表示為@A+PC;若由A和DPTR提供,在匯編語言指令中尋址地址為@A+DPTR。其中,PC或DPTR被稱為基址寄存器,A被稱為變址寄存器,基址與變址相加為16位無符號加法。若變址寄存器A中內(nèi)容加基址寄存器DPTR(或PC)中內(nèi)容時(shí),低8位有進(jìn)位,則該進(jìn)位直接加到高位,不影響進(jìn)位標(biāo)志。因變址尋址指令多用于查表,故常稱為查表指令。
匯編語言指令:MOVC A,@A+DPTR
該指令將DPTR中的內(nèi)容加上A中的內(nèi)容作為地址,再將該地址中的內(nèi)容傳送到累加器A中,單字節(jié)指令。
6. 相對尋址:
相對尋址是以相對尋址指令的下一條指令的程序計(jì)數(shù)器PC的內(nèi)容為基值,加上指令機(jī)器代碼中的“相對地址”,形成新的PC值(要轉(zhuǎn)移的指令地址)的尋址方式。指令機(jī)器代碼中“相對地址”指的是用一個(gè)帶符號的8位二進(jìn)制補(bǔ)碼表示的偏移字節(jié)數(shù),其取值范圍為-128~+127,負(fù)數(shù)表示向后轉(zhuǎn)移,正數(shù)表示向前轉(zhuǎn)移。
若(PC)表示該指令在ROM中的首地址,該指令字節(jié)數(shù)為2,執(zhí)行時(shí)分兩步操作:(PC)←(PC)+2,(PC)←(PC)+相對地址。第一步完成后,PC中的值為該指令的下一條指令的首地址;第二步完成后,PC中的內(nèi)容(PC)為轉(zhuǎn)移的目標(biāo)地址。所以,轉(zhuǎn)移的目標(biāo)地址范圍是該相對尋址指令的下一條指令首址加上-128~—+127字節(jié)的地址。
匯編語言指令:SJMP rel
匯編語言相對尋址指令中的”rel”往往是一個(gè)標(biāo)號地址,表示ROM中某轉(zhuǎn)移目標(biāo)地址。匯編軟件對該匯編語言指令進(jìn)行匯編時(shí),自動算出“相對地址”并填入機(jī)器代碼中,應(yīng)將”rel”理解為“帶有相對意義的轉(zhuǎn)移目標(biāo)地址”。
Rel=(PC)+相對尋址指令字節(jié)數(shù)+相對地址
其中,(PC)為該指令所在ROM中的首地址。
7. 位尋址:
參與操作的數(shù)據(jù)為“位”,而不是字節(jié),是對片內(nèi)數(shù)據(jù)存儲器RAM和SFR中可位尋址單元的位進(jìn)行操作的尋址方式。
匯編語言指令:ANL C,bit
該指令將bit(位地址)中的內(nèi)容(0或1)與C中的內(nèi)容進(jìn)行與操作,再將結(jié)果傳送到PSW中的進(jìn)位標(biāo)志C中。
-
單片機(jī)
+關(guān)注
關(guān)注
6030文章
44489瀏覽量
631971 -
寄存器
+關(guān)注
關(guān)注
31文章
5294瀏覽量
119814 -
尋址
+關(guān)注
關(guān)注
0文章
17瀏覽量
7408
原文標(biāo)題:【M博士問答】單片機(jī)的尋址方式有哪些?
文章出處:【微信號:Mouser-Community,微信公眾號:貿(mào)澤電子設(shè)計(jì)圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論