C單片機(jī)尋址方式
單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,第三章 80C51單片機(jī)指令系統(tǒng),1,3.1 80C51指令系統(tǒng)概述,指令: 命令,指令格式:操作碼 和 操作數(shù),操作碼,操作碼,操作碼是用來規(guī)定指令所完成的操作的;,操作數(shù)則表示操作的對象。,2,機(jī)器語言:用二進(jìn)制代碼表示的指令系統(tǒng)稱為機(jī)器語言.,如: 11001001,匯編語言:用助記符表示指令系統(tǒng)的語言稱為匯編語言.,如: MOV A,R1,指令系統(tǒng):軟件資源 基礎(chǔ)和工具,80C51共有42種助記符,33種操作功能, 255種操作碼 (00H至FFH,除A5H外),。而指令功能助記符與操作數(shù)各種尋址方式的結(jié)合,共構(gòu)造出111種指令。,3,尋址方式就是在指令中給出的尋找操作數(shù)或操作數(shù)所在地址的方法。執(zhí)行任何一條指令都需要使用操作數(shù)。,80C5l指令系統(tǒng)中共有以下7種尋址方式。, 立即尋址,在指令中直接給出操作數(shù),出現(xiàn)在指令中的操作數(shù)稱為立即數(shù)。在立即數(shù)前面必需加上前綴“”。,例如:指令 MOV DPTR,1234H,1234H是立即數(shù),指令功能是把16位立即數(shù)1234H送入數(shù)據(jù)指針DPTR中,如,圖31,所示。,尋址方式,4,2直接尋址,在指令中直接給出操作數(shù)單元的地址,也就是指令中操作數(shù)直接以存儲單元地址的形式給出。,例如:指令 MOV A,3AH,其功能是把片內(nèi)RAM中3AH單元內(nèi)的數(shù)據(jù)傳送給累加器A,如,圖32,所示。,這種尋址方式的尋址范圍只限于片內(nèi)RAM。, 低128單元,在指令中直接以單元地址形式給出。, 特殊功能寄存器,直接尋址是訪問大部分特殊功能寄存器的唯一方法。,尋址方式,5,3寄存器尋址,在指令中將指定寄存器的內(nèi)容作為操作數(shù)。因此指定了寄存器就能得到操作數(shù)。,寄存器尋址方式中,用符號名稱來表示寄存器。,例如:指令I(lǐng)NC R0,其功能如,圖33,所示。,寄存器尋址方式的尋址范圍包括:,(1)四個寄存器組共32個通用寄存器。,(2)部分特殊功能寄存器。,尋址方式,6,4寄存器間接尋址,在指令中給出的寄存器內(nèi)容是操作數(shù)的地址,從該地址中取出的才是操作數(shù)。,寄存器間接尋址應(yīng)在寄存器的名稱前面加前綴“”。,假定R1寄存器的內(nèi)容是 60H,則指令,ANL A,,R1,的功能是以 R1寄存器的內(nèi)容 60H為地址,將60H地址單元的內(nèi)容與累加器A中的數(shù)相“與” ,其結(jié)果仍存放在A中、其功能示意請參見,圖34,。,尋址方式,7,寄存器間接尋址的尋址范圍:, 片內(nèi)RAM的低128單元,只能采用R0或R1為間址寄存器,其形式為Ri(i0,1)。, 片外RAM 的64 KB單元,使用DPTR作為間址寄存器,其形式為DPTR,,例如MOVX A,DPTR, 片外RAM低256單元,除了可使用DPTR作為間址寄存器外,也可使用R0或R1作間址寄存器。,例如:MOVX A,R0, 堆棧區(qū):堆棧操作指令(PUSH和POP)也應(yīng)算作是寄存器間接尋址,即以堆棧指針(SP)作間址寄存器的間接尋址方式。,8, 相對尋址,在指令中給出的操作數(shù)為程序轉(zhuǎn)移的偏移量。,把PC的當(dāng)前值加上偏移量就構(gòu)成了程序轉(zhuǎn)移的目的地址。,轉(zhuǎn)移的目的地址可用如下公式表示:,目的地址轉(zhuǎn)移指令所在地址轉(zhuǎn)移指令字節(jié)數(shù)rel,偏移量rel是一個帶符號的8位二進(jìn)制補(bǔ)碼數(shù),所能表示的數(shù)的范圍是一128127。,尋址方式,9,例如:指令JC 80H,其執(zhí)行示意圖如,圖35,所示。,指令的操作碼存在 1000H單元,偏移量存在 1001H單元。執(zhí)行該指令后,程序計數(shù)器PC 指向1002 H(即當(dāng)前值)。這里80H即128,故1002H與128(80H)相加(補(bǔ)碼運(yùn)算)后得到轉(zhuǎn)移地址 0F82H。,10,6變址尋址,以DPTR或PC為基址寄存器,累加器A做變址寄存器,以兩者內(nèi)容相加,形成的16位程序存儲器地址作為操作數(shù)地址。又稱基址寄存器變址寄存器間接尋址。,例如:指令,MOVC A,ADPTR,其功能是把DPTR和A的內(nèi)容相加所得到的程序存儲器地址單元的內(nèi)容送A。,假定指令執(zhí)行前,(A)54H,(DPTR)1256H,則該指令的操作示意請參見,圖36,。變址尋址形成的操作數(shù)地址為1256H54H12AAH,若12AAH單元的內(nèi)容為00H,則該指令執(zhí)行的結(jié)果是A的內(nèi)容為00H 。,11,80C51指令系統(tǒng)中的變址尋址指令有如下特點(diǎn):, 變址尋址方式只能對程序存儲器進(jìn)行尋址 ,或者說是專門針對程序存儲器的尋址方式。, 變址尋址指令只有三條,MOVC A,ADPTR,MOVC A,APC,JMP ADPTR,其中前兩條是程序存儲器讀指令,后一條是無條件轉(zhuǎn)移指令。, 這三條指令卻都是單字節(jié)指令。, 變址尋址方式用于查表操作。,12,7位尋址,80C51有位處理功能,可以對數(shù)據(jù)位進(jìn)行操作,因此,就有相應(yīng)的位尋址方式。,位尋址的尋址范圍:,(1)片內(nèi)RAM中的位尋址區(qū),例如 MOV C,2BH,(2) 可位尋址的特殊功能寄存器位,可供位尋址的特殊功能寄存器共有11個,有尋址位83位。,尋址方式,13,這些尋址位在指令中有以下4種表示方法:,直接使用位地址表示方法。,單元地址加位的表示方法。,特殊功能寄存器符號加位的表示方法。,位名稱表示方法,。,80C51指令系統(tǒng)的7種尋址方式概括起來如,表31,所列。,14,圖31 立即尋址示意圖,15,圖32,直接尋址示意圖,16,圖,33,寄存器尋址示意圖,17,圖,34,寄存器間接尋址示意圖,18,圖35,相對尋址示意圖,19,圖36 變址尋址示意圖,20,圖37 數(shù)據(jù)傳送指令示意圖,21,圖38 半字節(jié)交換指令示意圖,22,圖 39 循環(huán)移位指令示意圖,23,圖,3,10 CJNE,指令執(zhí)行流程圖,24,表 31 尋址方式與尋址空間,尋 址 方 式,尋 址 空 間,1寄存器尋址,R0R7、A、B、CY(bit) 、DPTR,2直接尋址,內(nèi)部RAM低128字節(jié),特殊功能寄存器,3寄存器間接尋址,內(nèi)部RAM(R0,R1,SP僅PUSH、POP),外部RAM(R0,R1,DPTR),4立即尋址,程序存儲器,5變址尋址,程序存儲器(A+PC,A+DPTR),6相對尋址,程序存儲器(PC偏移量),7位尋址,內(nèi)部RAM中有128個可尋址位,特殊功能寄存器中可位尋址的位,25,