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