




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
單片機(jī)原理與應(yīng)用趙琳
臨沂大學(xué)汽車學(xué)院教學(xué)目的:熟悉80C51系列單片機(jī)的尋址方式及 每一種尋址方式對(duì)應(yīng)的尋址空間;掌 握每一條指令功能。教學(xué)重點(diǎn):1.80C51系列單片機(jī)尋址方式所對(duì)應(yīng) 的尋址空間; 2.80C51系列單片機(jī)指令功能。教學(xué)難點(diǎn):1.數(shù)據(jù)傳送類指令中對(duì)不同的存儲(chǔ)空 間應(yīng)采用的傳送指令及尋址方式。 2.間接尋址方式第4章80C51系列指令系統(tǒng)
精選課件概述MCS-51系列單片機(jī)的指令系統(tǒng)專用于51系列單片機(jī),共有111條指令,具在豐富靈活的尋址方式,其指令格式與8086的指令系統(tǒng)相同,甚至某些指令還完全相同。使用時(shí)應(yīng)注意區(qū)別。在111條指令中,從存儲(chǔ)空間的占用上看,單字節(jié)指令占49條,雙字節(jié)指令占45條,三字節(jié)指令占17條;從執(zhí)行時(shí)間上看,在111條指令中,單機(jī)器周期指令占64條,雙機(jī)器周期指令占45條,僅乘法和除法兩條指令為四機(jī)器周期指令。因而無論是存儲(chǔ)空間的利用率,還是時(shí)間的執(zhí)行效率都是較高的,再加上靈活的尋址方式,特別適合于實(shí)時(shí)測(cè)量和控制場(chǎng)合。因而,單片機(jī)又常被稱為微控制器。精選課件指令的定義
返回1、指令:是人們向計(jì)算機(jī)發(fā)的一種命令;一條指令對(duì)應(yīng)著一種操作。2、指令系統(tǒng):CPU所能執(zhí)行的全部指令的集合。
CPU能夠執(zhí)行多少條指令是由CPU的內(nèi)部結(jié)構(gòu)決定的。不同的CPU,其指令系統(tǒng)不同。精選課件指令的組成指令由操作碼和操作數(shù)組成。操作碼決定CPU執(zhí)行何種操作。操作數(shù)是指參與運(yùn)算的數(shù)。操作數(shù)及操作對(duì)象可以是一個(gè)數(shù),也可以是數(shù)所在的地方。返回精選課件指令的表示方法
用助記符(指令功能的英文縮寫)書寫。指令在機(jī)器中必須以機(jī)器碼(二進(jìn)制碼)的形式出現(xiàn)。人們?cè)跁鴮懼噶顣r(shí),可以有二種方法:1、在計(jì)算機(jī)開展的初期,人們用機(jī)器碼書寫指令,這一階段成為機(jī)器語言階段。優(yōu)點(diǎn):用機(jī)器碼書寫的程序,計(jì)算機(jī)可以直接識(shí)別和運(yùn)行。缺點(diǎn):書寫時(shí)容易,不容易記憶。2、為了克服機(jī)器語言的缺點(diǎn),人們用符號(hào)書寫指令:指令由操作碼和操作數(shù)組成。
這一階段成為匯編語言階段.優(yōu)點(diǎn):容易理解和記憶。缺點(diǎn):計(jì)算機(jī)不能直接識(shí)別和運(yùn)行。匯編語言程序必須轉(zhuǎn)換成機(jī)器語言程序,轉(zhuǎn)換方法有二種:手工轉(zhuǎn)換:查表符號(hào)指令---機(jī)器碼指令匯編程序:符號(hào)指令----機(jī)器----機(jī)器碼指令操作數(shù)用規(guī)定的符號(hào)書寫。精選課件§4-1指令的格式及標(biāo)識(shí)操作碼70數(shù)據(jù)或?qū)ぶ贩绞?0雙字節(jié)指令:標(biāo)號(hào):操作碼操作數(shù)或操作數(shù)地址;注釋單字節(jié)指令:操作碼70三字節(jié)指令:操作碼70數(shù)據(jù)或?qū)ぶ贩绞?0數(shù)據(jù)或?qū)ぶ贩绞?0指令按字節(jié)長(zhǎng)度可以分為三種:指令的格式:例如:MOVA,R0例如:MOVA,30H例如:MOVDPTR,#2021H操作碼助記符、目的操作數(shù)、源操作數(shù)是指令的核心局部。方括號(hào)中內(nèi)容為可選項(xiàng),其有無視具體的指令而異。一、指令的格式精選課件二、關(guān)于標(biāo)號(hào) 標(biāo)號(hào)不允許只用數(shù)字,而應(yīng)以字母打頭,后面跟數(shù)字,不可使用運(yùn)算符號(hào),不能同十六進(jìn)制數(shù)發(fā)生混淆,較好的取名原那么是見名知義。便于程序員在調(diào)試程序時(shí)更加順利,往往一個(gè)標(biāo)號(hào)就是一個(gè)功能入口,因而在使用標(biāo)號(hào)時(shí)應(yīng)特別小心,用并非每句指令都需要標(biāo)號(hào)。精選課件Rn〔n=0~7〕--當(dāng)前選中的8個(gè)工作存放器R0~R7,它在片內(nèi)數(shù)據(jù)存儲(chǔ)器中的地址由PSW中RSl、RS0確定;Ri〔i=0或1〕--當(dāng)前選中的用于間接尋址的工作存放器R0、R1,它在片內(nèi)數(shù)據(jù)存儲(chǔ)器中的地址由RS0、RS1確定;direct--8位直接地址,可以是片內(nèi)RAM單元地址或SFR地址;#data8--8位常數(shù);#datal6--16位常數(shù);
三、關(guān)于指令中的符號(hào)標(biāo)識(shí)精選課件addrl6--16位目的地址,尋址空間64K字節(jié)程序存儲(chǔ)器;addr11--11位目的地址;用于2K范圍內(nèi)尋址rel--補(bǔ)碼形式的8位地址偏移量,用于相對(duì)轉(zhuǎn)移指令中,帶符號(hào)的8位偏移量〔-128~+127〕bit--位地址,片內(nèi)RAM或SFR的可尋址位的位地址;#data--表示8位立即數(shù),即00H~FFH#data16--表示16位立即數(shù),即0000H~FFFFHdirect--8位直接地址,可以是內(nèi)部RAM區(qū)的某一單元或某一專用功能存放器的地址@--間接尋址存放器的前綴;/--位操作數(shù)的取反操作前綴。三、關(guān)于指令中的符號(hào)標(biāo)識(shí)精選課件以下符號(hào)僅出現(xiàn)在指令注釋或功能說明中。X--片內(nèi)RAM的直接地址〔包含位地址〕或存放器。(X〕--在直接尋址方式中,表示直接地址X中的內(nèi)容;在間接尋址方式中,表示由間址存放器X指出的地址單元。((X))--在間接尋址方式中,表示由間址存放器X指出的地址單元中的內(nèi)容。--指令操作流程,將箭頭左邊內(nèi)容送入箭頭右邊的單元內(nèi)。
三、關(guān)于指令中的符號(hào)標(biāo)識(shí)精選課件四、關(guān)于注釋 為了增強(qiáng)程序的可讀性,使別人易讀,或防止日久遺忘,可適當(dāng)加些注釋。注釋由“;〞開始。例MOV A,#3AH ;立即數(shù)3AH送累加器A精選課件§4-2 尋址方式
在程序行中,操作碼代表了該句指令的功能,而功能的對(duì)象卻由操作數(shù)決定,由操作數(shù)指出參與運(yùn)算的數(shù)或該數(shù)所在的地址。取得操作數(shù)的地址的方法叫做尋址方式。尋址方式與計(jì)算機(jī)的存儲(chǔ)空間結(jié)構(gòu)是密切相關(guān)的。靈活運(yùn)用各種尋址方式,可以大大的提高程序的運(yùn)行效率。精選課件尋址方式的定義
指令由操作碼和操作數(shù)組成。指出操作數(shù)所在地方的方式就是尋址方式。操作碼決定CPU執(zhí)行何中操作。操作數(shù)就是操作對(duì)象。無論何種指令其操作的對(duì)象都是數(shù)據(jù)。數(shù)據(jù)在指令中有2種表示方法:1、數(shù)本身2、數(shù)所在的地方返回精選課件一、尋址方式(找信方式)我的信在他那!找信去!②①注:找信是尋找信的“地址〞!你能說出第二封信的“地址〞嗎?精選課件1.立即數(shù)尋址方式 立即數(shù)〔指令中的常數(shù)〕直接參與指令操作。立即數(shù)前必須加“#〞標(biāo)記。指令中的立即數(shù)有8位立即數(shù)#data8和16位立即數(shù)#data16。例1MOV A,#3AH ;立即數(shù)3AH送累加器A圖4-1MOVA,#3AH執(zhí)行示意圖
精選課件目的地#XXH操作數(shù)MOVP1,#55HMOVA,#01H#55H目的地信存放器尋址直接尋址立即數(shù)尋址存放器間接尋址變址尋址相對(duì)尋址位尋址精選課件2.直接尋址方式在這種尋址方式中,操作數(shù)項(xiàng)給出的是參加運(yùn)算的操作數(shù)的地址。可尋址空間有特殊功能存放器、內(nèi)部數(shù)據(jù)存儲(chǔ)器以及位地址。其中特殊功能存放器和位地址空間只能用直接尋址方式來訪問。
直接尋址方式只能給出8位地址,因此,這種尋址方式的尋址范圍只限于片內(nèi)RAM。⑴低128單元,在指令中直接以單元地址形式給出。⑵特殊功能存放器,這時(shí)除了可以單元地址形式給出外,還可以存放器符號(hào)形式給出。雖然特殊功能存放器可以使用符號(hào)標(biāo)志,但在指令代碼中還是按地址進(jìn)行編碼的。應(yīng)當(dāng)說明的是,直接尋址是訪問特殊功能存放器的唯一方法。
精選課件圖4-2MOVA,3AH執(zhí)行示意圖例2MOVP1,#10H ;將立即數(shù)10H送P1口。
注意:例2中的目的操作數(shù)P1是直接尋址方式,這里用符號(hào)P1代替了直接地址90H。例1MOV A,3AH ;把3AH單元的內(nèi)容送A精選課件目的地存放器尋址P72直接尋址P72立即數(shù)尋址P71存放器間接尋址P73變址尋址P74相對(duì)尋址P74位尋址P75內(nèi)部RAM或SFR區(qū)操作數(shù)XXHMOVP1,20H20H目的地20H注:尋址是尋操作數(shù)的“地址〞!直接給出地址
20H——直接尋址精選課件3.存放器尋址方式 存放器尋址是對(duì)選定的工作存放器R0~R7、累加器A、通用存放器B、地址存放器DPTR和進(jìn)位CY中的數(shù)進(jìn)行操作。 例1.MOVA,R2 ;將當(dāng)前工作存放器的內(nèi)容送累加器A。(指令代碼為1字節(jié)EAH) 注意R2在片內(nèi)RAM的位置,它由RS0、RS1決定。如PSW中RS1、RS0的值分別為1、0,那么現(xiàn)在的R2屬于第二組工作存放器,那么它的地址為12H。現(xiàn)12H中存放著數(shù)值4AH,那么執(zhí)行該指令后,4AH就被送到A累加器中。四個(gè)存放器組共32個(gè)通用存放器。但在指令中只能使用當(dāng)前存放器組。因此在使用前要通過指定PSW中的RS1、RS0,以選擇使用的當(dāng)前存放器組。精選課件
圖4-2MOVA,R2執(zhí)行示意圖精選課件目的地存放器尋址直接尋址立即數(shù)尋址存放器間接尋址變址尋址相對(duì)尋址位尋址存放器目的地操作數(shù)XXHMOVP1,A存放器R0-R7A
B
DPTR你能說出為什么叫存放器尋址嗎?精選課件4.存放器間接尋址方式
在這種尋址方式中,操作數(shù)所指定的存放器中存放的不是操作數(shù)本身,而是操作數(shù)的地址。這種尋址方式用于訪問片內(nèi)數(shù)據(jù)存儲(chǔ)器或片外數(shù)據(jù)存儲(chǔ)器。間接尋址存放器:Ri(8位地址指針〕和DPTR〔16位地址指針〕,間接尋址存放器前加@表示間址操作。例1MOV R0,#50H MOV A,@R0
片內(nèi)RAM的低128單元,只能采用R0或R1為間址存放器,其形式為@Ri〔i=0,1〕精選課件例2MOV DPTR,#2760H MOVX @DPTR,A存放器間接尋址的尋址范圍:⑴片內(nèi)RAM的低128單元,只能采用R0或R1為間址存放器,其形式為@Ri〔i=0,1〕。⑵片外RAM的64KB單元,使用DPTR作為間址存放器,其形式為@DPTR,例如MOVXA,@DPTR,其功能是把DPTR指定的片外RAM單元的內(nèi)容送累加器A。⑶片外RAM低256單元,除了可使用DPTR作為間址存放器外,也可使用R0或R1作間址存放器。例如:MOVXA,@R0.即把R0指定的片外RAM單元的內(nèi)容送累加器A。⑷堆棧區(qū):堆棧操作指令〔PUSH和POP〕也應(yīng)算作是存放器間接尋址,即以堆棧指針〔SP〕作間址存放器的間接尋址方式。精選課件存放器尋址直接尋址立即數(shù)尋址存放器間接尋址變址尋址相對(duì)尋址位尋址MOVP1,@R0目的地存放器操作數(shù)3AH內(nèi)部RAM3AH65H3AHR0R1
DPTR寄存器間接尋址寄存器目的地2號(hào)信在2號(hào)箱子里1號(hào)你能說出1號(hào)箱子和2號(hào)箱子分別對(duì)應(yīng)內(nèi)存中哪一局部嗎?精選課件尋址比較MOVP1,R0③地址是寄存器R0MOVP1,@R0②地址在寄存器R0里MOVP1,20H④地址是內(nèi)存20HMOVP1,#20H①直接將20H這個(gè)數(shù)送P1口錯(cuò)!錯(cuò)!錯(cuò)!MOVP1,R0對(duì)!精選課件尋址比較MOVP1,R0③地址是寄存器R0MOVP1,@R0②地址在寄存器R0里面MOVP1,20H④地址是內(nèi)存20HMOVP1,#20H①直接將20H這個(gè)數(shù)送P1口錯(cuò)!錯(cuò)!錯(cuò)!MOVP1,@R0對(duì)!精選課件尋址比較MOVP1,R0③地址是寄存器R0MOVP1,@R0②地址在寄存器R0里面MOVP1,20HMOVP1,#20H①直接將20H這個(gè)數(shù)送P1口錯(cuò)!錯(cuò)!錯(cuò)!MOVP1,20H對(duì)!④地址是內(nèi)存20H精選課件尋址比較MOVP1,R0③地址是寄存器R0MOVP1,@R0②地址在寄存器R0里MOVP1,20H④地址是內(nèi)存20HMOVP1,#20H①直接將20H這個(gè)數(shù)送P1口錯(cuò)!錯(cuò)!錯(cuò)!MOVP1,#20H對(duì)!精選課件5.變址尋址〔基址存放器+變址存放器的間接尋址〕 變址尋址方式中使用DPTR或PC作基址存放器,累加器A作變址存放器。 采用變址尋址的指令只有三條: MOVC A,@A+DPTR MOVC A,@A+PC JMP @A+DPTR 前兩條用于程序存儲(chǔ)器的查表操作,后一條用于程序的分支散轉(zhuǎn)。精選課件
例1現(xiàn)假設(shè)MOVCA,@A+DPTR指令存放在70H單元,ACC中原存放值為E0H,DPTR中值為2000H,那么A+DPTR形成的地址為20E0H。20E0H單元中內(nèi)容為47H,那么執(zhí)行該指令后,ACC中原E0H被47H代替。該指令執(zhí)行過程示于圖4-4。精選課件存放器尋址直接尋址立即數(shù)尋址存放器間接尋址變址尋址相對(duì)尋址位尋址MOVCA,@A+DPTR目的地存放器操作數(shù)內(nèi)部RAM3AH65H3AH基址存放器12H變址存放器34H內(nèi)部RAM46H65HADPTRPC46H精選課件6.相對(duì)尋址方式相對(duì)尋址是將程序轉(zhuǎn)移到相對(duì)地址的轉(zhuǎn)移指令。 是將程序計(jì)數(shù)器PC中的當(dāng)前內(nèi)容〔轉(zhuǎn)移指令的下一條指令地址〕與轉(zhuǎn)移指令第二字節(jié)所給出的偏移量相加,其結(jié)果作為跳轉(zhuǎn)指令的轉(zhuǎn)移地址。偏移量為帶符號(hào)的數(shù),其范圍為+127~-128。程序設(shè)計(jì)中,相對(duì)地址可以用指令標(biāo)號(hào)或直接地址偏移量數(shù)值,但要注意,相對(duì)轉(zhuǎn)移地址的偏移量不得超過+127~-128。
精選課件例1JC03H ;假設(shè)進(jìn)位C=0,那么程序順序執(zhí)行, 即不跳轉(zhuǎn),PC=PC+2;假設(shè)進(jìn)位C= 1,那么以PC中的當(dāng)前內(nèi)容為基地址, 加上偏移量03H后所得到的結(jié)果為該轉(zhuǎn)移指令的目的地址。
精選課件目的地存放器尋址直接尋址立即數(shù)尋址存放器間接尋址變址尋址相對(duì)尋址XXH位尋址操作數(shù)SJMP54HPC+54HPC2002H······2002H=2056HPC2056H精選課件7.位尋址方式 位尋址空間:片內(nèi)RAM的位尋址區(qū)〔20H~2FH單元的128位〕和SFR中的可位尋址的位單元。 借助位累加器C:在進(jìn)行位操作時(shí),借助于進(jìn)位位C作為操作累加器。 位地址與字節(jié)直接尋址中的字節(jié)地址形式完全一樣,主要由操作碼來區(qū)分,使用時(shí)需予以注意。例1SETB3DH ;將片內(nèi)RAM位地址3DH即27H 單元的第5位置“1〞。例2ANLC,3DH;將3DH的位狀態(tài)與進(jìn)位位C 相與,結(jié)果保存在C中。精選課件存放器尋址直接尋址立即數(shù)尋址存放器間接尋址變址尋址相對(duì)尋址位尋址20H······27H21H28H21H20H100000000想一想:如果想使27H單元的第5位置1,該怎么辦呢?精選課件單元地址2FH2EH2DH2CH2BH2AH29H28H
26H25H24H23H22H21H20H7F776F675F574F47372F271F170F07
MSB
位地址
LSB7E766E665E564E46
362E261E160E067D756D655D554D45352D251D150D057C746C645C544C44
342C241C140C047B736B635B534B43
332B231B130B037A726A625A524A42
322A221A120A027971696159514941
312921191109017870686058504840
30282018100800位尋址地址表例:SETB3DH
3D
3C
3B3F
3E3A
393827H精選課件存放器尋址直接尋址立即數(shù)尋址存放器間接尋址變址尋址相對(duì)尋址位尋址SETB3DH20H······27H21H28H21H20H000000010精選課件位尋址的尋址范圍:〔1〕片內(nèi)RAM中的位尋址區(qū)片內(nèi)RAM中的單元地址20H~2FH,共16個(gè)單元128位,為位尋址區(qū),位地址是00H~7FH。對(duì)這128個(gè)位的尋址使用直接位地址表示。例如MOVC,2BH指令的功能是把位尋址區(qū)的2BH位狀態(tài)送累加位C?!?〕可位尋址的特殊功能存放器位可供位尋址的特殊功能存放器共有11個(gè),有尋址位88位。這些尋址位在指令中有以下4種表示方法:?直接使用位地址表示方法。?單元地址加位的表示方法。例如88H單元的位5,那么表示為88H.5。?特殊功能存放器符號(hào)加位的表示方法、例如PSW存放器的位5,可表示為:為PSW.5。?位名稱表示方法,特殊功能存放器中的一些尋址位是有名稱的,例如PSW存放器位5為F0標(biāo)志位,那么可使用F0表示該位。精選課件MCS-51根本七種尋址方式在指令中直接給出操作數(shù),出現(xiàn)在指令中的操作數(shù)稱為立即數(shù)。為了與直接尋址指令中的直接地址相區(qū)別,在立即數(shù)前面必需加上前綴“#〞在指令中直接給出操作數(shù)單元的地址。直接尋址方式只能給出8位地址,因此,這種尋址方式的尋址范圍只限于片內(nèi)RAM在指令中將指定存放器的內(nèi)容作為操作數(shù)。因此指定了存放器就能得到操作數(shù)。在指令中給出的存放器內(nèi)容是操作數(shù)的地址,從該地址中取出的才是操作數(shù)。存放器間接尋址也需以存放器符號(hào)名稱的形式表示。為了區(qū)別存放器尋址和存放器間接尋址,在存放器間接尋址中,應(yīng)在存放器的名稱前面加前綴“@〞。以DPTR或PC為基址存放器,累加器A做變址存放器,以兩者內(nèi)容相加,形成的16位程序存儲(chǔ)器地址作為操作數(shù)地址。又稱基址存放器+變址存放器間接尋址。在指令中給出的操作數(shù)為程序轉(zhuǎn)移的偏移量。在相對(duì)轉(zhuǎn)移指令中,給出地址偏移量〔在80C51的指令系統(tǒng)中,以“rel〞表示〕,把PC的當(dāng)前值加上偏移量就構(gòu)成了程序轉(zhuǎn)移的目的地址。精選課件§4-3MCS—51指令系統(tǒng)的分類4.3.1數(shù)據(jù)傳送指令〔29條〕
4.3.2算術(shù)運(yùn)算指令〔24條〕4.3.3邏輯運(yùn)算指令〔24條〕4.3.4控制轉(zhuǎn)移指令〔17條〕4.3.5位操作指令〔17條〕精選課件
單片微機(jī)執(zhí)行指令的過程,分為取指令和執(zhí)行指令兩項(xiàng)根本內(nèi)容。在取指階段,單片微機(jī)從程序存儲(chǔ)器中取出指令操作碼,送到指令存放器IR中,通過指令譯碼器的譯碼,產(chǎn)生一系列的控制信號(hào)。在指令執(zhí)行階段中,利用指令譯碼產(chǎn)生的控制信號(hào),進(jìn)行本指令規(guī)定的操作。單片微機(jī)執(zhí)行指令的過程
精選課件數(shù)據(jù)傳送類指令數(shù)據(jù)傳送指令按功能又可分為內(nèi)部8位數(shù)據(jù)傳送指令、16位數(shù)據(jù)傳送指令(專用于設(shè)定地址指針)、外部數(shù)據(jù)傳送指令、程序存儲(chǔ)器數(shù)據(jù)傳送指令、交換指令和堆棧操作指令。助記符有MOV、MOVX、MOVC、XCH、XCHD、SWAP、PUSH、POP等八種。源操作數(shù)可采用存放器、存放器間接、直接、立即、存放器基址加變址等五種尋址方式,目的操作數(shù)可以采用存放器、存放器間接、直接等三種尋址方式。數(shù)據(jù)傳送指令的一般操作是把源操作數(shù)傳送到目的操作數(shù),指令執(zhí)行后源操作數(shù)不變,目的操作數(shù)被修改為源操作數(shù)。假設(shè)要求進(jìn)行數(shù)據(jù)傳送時(shí),目的操作數(shù)不變,那么可以用交換指令。精選課件數(shù)據(jù)傳送類指令不影響標(biāo)志位CY、AC、OV。對(duì)于P標(biāo)志一般不加以說明。只有一種堆棧操作指令可以直接修改程序狀態(tài)字PSW,這時(shí)可以使某些標(biāo)志位發(fā)生改變。數(shù)據(jù)傳送指令的特點(diǎn)有:⑴可以進(jìn)行直接地址到直接地址的數(shù)據(jù)傳送,能把一個(gè)并行I/O口中的內(nèi)容傳送到片內(nèi)RAM單元中而不必經(jīng)過累加器或工作存放器Rn。⑵用R0和R1存放器間址訪問片外數(shù)據(jù)存儲(chǔ)器256個(gè)字節(jié)址及片內(nèi)RAM中的任一單元。用DPTR間址訪問片外全部64KB的數(shù)據(jù)存儲(chǔ)器或I/O。⑶累加器A能對(duì)Rn存放器尋址;能與特殊功能存放器之間進(jìn)行一個(gè)字節(jié)的數(shù)據(jù)傳送;能對(duì)片內(nèi)RAM直接尋址;能與片內(nèi)RAM單元之間進(jìn)行低半字節(jié)的數(shù)據(jù)交換。⑷能用變址尋址方式訪問程序存儲(chǔ)器中的表格,將程序存儲(chǔ)器單元中的固定常數(shù)或表格字節(jié)內(nèi)容傳送到累加器A中。精選課件主要用于80C51內(nèi)部存儲(chǔ)器和存放器之間的數(shù)據(jù)傳送。這類傳送指令的格式為: MOV<目的字節(jié)>,<源字節(jié)>它的功能是把源字節(jié)的內(nèi)容送到目的字節(jié),而源字節(jié)的內(nèi)容不變。操作屬于拷貝性質(zhì)。源操作數(shù)可以有:累加器A,工作存放器Rn〔n=0,…,7〕,直接地址direct、間接尋址存放器@Ri〔i=0,1〕和立即數(shù)#data等五種。目的操作數(shù)可以有:累加器A,工作存放器Rn〔n=0,…,7〕,直接地址direct和間接尋址存放器@Ri〔i=0,1〕等四種。這類指令是以MOV為其助記符的,假設(shè)以目的操作數(shù)分類,可將內(nèi)部八位數(shù)據(jù)傳送指令分為4組。1.內(nèi)部RAM(八位)數(shù)據(jù)傳送指令
精選課件(1)以累加器A為目的操作數(shù)的指令組
指令 功能 尋址范圍機(jī)器碼MOVA,Rn;(A)←(Rn)R0-R711101rrr(E8~EFH) 8種操作碼MOV A,direct;(A)←(direct)00-FFH11100101direct 雙字節(jié)MOV A,@Ri;(A)←((Ri))00-FFH1110011r(E6~E7H)2種操作碼MOV A,#data;(A)←(#data)#00-#FFH01110100data雙字節(jié)傳送指令是以累加器A為中心的總體結(jié)構(gòu)。絕大局部傳送操作均需通過A進(jìn)行的。精選課件(2)以工作存放器Rn為目的操作數(shù)的指令組MOVRn,A ;〔Rn〕←〔A〕MOVRn,direct ;〔Rn〕←〔direct〕MOVRn,#data ;〔Rn〕←#data
這組指令的功能是把源操作數(shù)的內(nèi)容送入當(dāng)前工作存放器區(qū)的R0~R7中的某一個(gè)存放器。源操作數(shù)有存放器尋址、直接尋址和立即尋址等尋址方式。
精選課件(3)以直接地址direct為目的操作數(shù)的指令組MOV direct,A ;(direct)←(A)MOV direct,Rn ;(direct)←(Rn)MOV direct,direct ;(direct)←〔direct〕MOV direct,@Ri ;(direct)←((Ri))MOV direct,#data ;(direct)←#data這組指令的功能是把源操作數(shù)的內(nèi)容送入由直接地址指出的存儲(chǔ)單元。源操作數(shù)有存放器尋址、直接尋址、存放器間接尋址和立即尋址等尋址方式。直接地址direct為8位直接地址,可尋址0~255個(gè)單元,對(duì)80C51可直接尋址內(nèi)部RAM0~127個(gè)地址單元和128~255地址的特殊功能存放器。精選課件(4)以間接尋址存放器Ri為目的操作數(shù)的指令組MOV @Ri,A ;〔〔Ri〕〕←〔A〕MOV @Ri,direct ;〔〔Ri〕〕←〔A〕MOV @Ri,#data ;〔〔Ri〕〕←#data這組指令的功能是把源操作數(shù)的內(nèi)容送入由R0或R1的內(nèi)容所指的內(nèi)部RAM中的存儲(chǔ)單元。源操作數(shù)有存放器尋址、直接尋址和立即尋址等尋址方式。精選課件間接尋址存放器Ri由操作碼字節(jié)的最低位來選定是R0還是R1存放器,間址是以Ri的內(nèi)容作為操作數(shù)的地址來進(jìn)行尋址的。直接尋址direct單元在編程時(shí)就巳明確,而間接尋址單元是在程序進(jìn)行中明確的,間接尋址空間和直接尋址空間范圍相同,均為0~255個(gè)單元地址。立即數(shù)#data為一常數(shù),它是不帶符號(hào)的8位二進(jìn)制數(shù)。MOVA,80H ;表示把片內(nèi)RAM中地扯為80H單元(即P1口)中的內(nèi)容送AMOV80H,#88H;這是一條3字節(jié)指令,表示把立即數(shù)88H送到片內(nèi)RAM中的80H地址單元中去MOV80H,0E0H ;這是一條3字節(jié)指令表示把E0H單元的內(nèi)容送到80H單元中去。這是片內(nèi)數(shù)據(jù)存儲(chǔ)單元中的直接地址單元之間數(shù)據(jù)的直接傳送精選課件(5)十六位數(shù)據(jù)傳送指令 MOVDPTR,#data16 ;〔DPTR〕←#data16
這是80C51中唯一的一條16位指令。此指令把16位常數(shù)裝入數(shù)據(jù)指針DPTR,即數(shù)據(jù)高8位送入DPH存放器,數(shù)據(jù)低8位送入DPL存放器。16位常數(shù)在指令的第二、第三字節(jié)中〔第二字節(jié)為高位字節(jié)DPH,第三字節(jié)為低位字節(jié)DPL〕。 此操作不影響標(biāo)志位。 例:執(zhí)行指令MOVDPTR,#1234H 執(zhí)行結(jié)果∶〔DPH〕=12H,〔DPL〕=34H
精選課件這組的功能是實(shí)現(xiàn)累加器A與外部數(shù)據(jù)存儲(chǔ)器或I/O口之間傳送一個(gè)字節(jié)數(shù)據(jù)的指令。采用間接尋址方式訪問外部數(shù)據(jù)存儲(chǔ)器,有Ri和DPTR兩種間接尋址方式。采用R0或R1作間址存放器時(shí),可尋址256個(gè)外部數(shù)據(jù)存儲(chǔ)器單元,8位地址和數(shù)據(jù)均由P0口分時(shí)輸入和輸出。這時(shí)假設(shè)要訪問大于256個(gè)單元的片外RAM時(shí),可選用任何其它輸出口線來輸出高8位的地址〔一般選用P2口輸出高8位地址〕。采用16位DPTR作間址可尋址整個(gè)64KB片外數(shù)據(jù)存貯空間,低8位〔DPL〕由P0口進(jìn)行分時(shí)使用,高8位〔DPH〕由P2口輸出。2.外部數(shù)據(jù)的傳送指令組
精選課件(1)外部數(shù)據(jù)存儲(chǔ)器或I/O內(nèi)容送累加器A
MOVX A,@Ri MOVX A,@DPTR說明:指令執(zhí)行時(shí),在P3.7引腳上輸出RD有效信號(hào),可用作外部數(shù)據(jù)存儲(chǔ)器或I/O的讀選通信號(hào)。P0口分時(shí)輸出由Ri或DPL指定的低8位地址信息和輸入累加器中的數(shù)據(jù)信息,P2口那么輸出DPH指定的高8位地址信息。(2)累加器A內(nèi)容送外部數(shù)據(jù)存儲(chǔ)器或I/O MOVX @Ri,A MOVX @DPTR,A說明:該組指令執(zhí)行時(shí),在P3.6引腳上輸出WR有效信號(hào),可以用作外部數(shù)據(jù)存儲(chǔ)器或I/O的寫選通信號(hào)。P0口分時(shí)輸出由Ri或DPL指定的低8位地址信息和累加器中輸出的數(shù)據(jù)信息,P2口那么輸出DPH指定的高8位地址信息。精選課件例1:設(shè)工作存放器R0的內(nèi)容為12H,R1的內(nèi)容為34H,片外RAM34H單元的內(nèi)容為56H。執(zhí)行指令:MOVX A,@R1 ;〔34H〕=56H→AMOVX @R0,A ;〔A〕=56H→片外12H單元中執(zhí)行結(jié)果為片外RAM的〔34H〕=56H,〔12H〕=56H。例2:某應(yīng)用系統(tǒng)外擴(kuò)了8K字節(jié)RAM,要求把內(nèi)部RAM的20H單元內(nèi)容發(fā)送到外部RAM的800H單元中。MOV DPTR,#800H;外部數(shù)據(jù)存儲(chǔ)器地址指針MOV R0,#20H;內(nèi)部數(shù)據(jù)存儲(chǔ)器地址指針MOV A,@R0 ;取內(nèi)部數(shù)據(jù)存儲(chǔ)器20H單元內(nèi)容MOVX@DPTR,A ;送外部數(shù)據(jù)存儲(chǔ)器800H單元精選課件MOVCA,@A+PC MOVCA,@A+DPTR這兩條指令的功能均是從程序存儲(chǔ)器中讀取數(shù)據(jù)(如表格、常數(shù)等),執(zhí)行過程相同,其差異是基址不同,因此適用范圍也不同。累加器A為變址存放器,而PC、DPTR為基址存放器。PC為基址存放器時(shí),數(shù)表只能放在該指令單元往下的256個(gè)單元中,稱為近程查表。編程時(shí)需計(jì)算A值(數(shù)表首址的偏移量0)。DPTR為基址存放器時(shí),允許數(shù)表存放在程序存儲(chǔ)器的任意單元,稱為遠(yuǎn)程查表;3.程序存儲(chǔ)器數(shù)據(jù)傳送指令(或稱查表指令)精選課件例3:求平方數(shù)(遠(yuǎn)程查表法) MOVDPTR,#TABLE ;指向表首址MOVCA,@A+DPTR ;查表得到平方數(shù)MOV20H,A ;存平方數(shù)HERE:SJMPHERETABLE∶DB00H,01H,04H,09H ;平方表02~92DB16H,25H,36H DB49H,64H,81H精選課件4.堆棧操作指令組
PUSHdirect POPdirect入棧〔PUSH〕操作指令又稱“壓棧〞操作。指令執(zhí)行后棧指針〔SP〕+1指向棧頂上一個(gè)空單元,將直接地址direct單元內(nèi)容送入SP所指示的堆棧單元。此操作不影響標(biāo)志位。出棧(POP)操作指令,又稱“彈出〞操作,由棧指針(SP)所尋址的片內(nèi)RAM中棧頂?shù)膬?nèi)容((SP))送入直接尋址單元direct中,然后執(zhí)行(SP)一1并送入SP。此操作不影響標(biāo)志位。精選課件例:中斷響應(yīng)時(shí)(SP)=30H,DPTR的內(nèi)容為0123H,執(zhí)行入棧指令其結(jié)果怎樣?PUSHDPL ;低8位數(shù)據(jù)指針存放器DPL內(nèi)容入棧PUSH DPH;高8位數(shù)據(jù)指針存放器DPH內(nèi)容入棧。執(zhí)行結(jié)果:第一條指令(SP)+1=31H→(SP),(DPL)=23H→(31H)第二條指令(SP)+1=32H→(SP),(DPH)=01H→(32H)所以片內(nèi)RAM中,(31H)=23H,(32H)=01H,(SP)=32H。
精選課件例:設(shè)〔SP〕=32H,片內(nèi)RAM的30H~32H單元中的內(nèi)容分別為20H,23H,01H,執(zhí)行以下指令的結(jié)果怎樣? POPDPH ;〔〔SP〕〕=〔32H〕=01H→DPH 〔SP〕-1=32H-1=31H→SP POPDPL ;〔〔SP〕〕=〔31H〕=23H→DPL 〔SP〕-1=31H-1=30H→SP
精選課件5.字節(jié)交換指令XCH組 XCHA,Rn ;XCHA,direct XCHA,@Ri
這類指令的功能是將累加器A與源操作數(shù)的字節(jié)內(nèi)容互換。例:設(shè)〔R0〕=30H,〔A〕=3FH,片內(nèi)〔30H〕=BBH。執(zhí)行指令XCHA,@R0執(zhí)行結(jié)果〔A〕=BBH,〔30H〕=3FH。3.2.5數(shù)據(jù)交換指令精選課件半字節(jié)交換指令組
⑴XCHD A,@Ri
將Ri間接尋址單元的低4位內(nèi)容與累加器A的低4位內(nèi)容互換,而它們的高4位內(nèi)容均不變。 例:設(shè)〔R0〕=20H,〔A〕=36H〔00110110B〕,內(nèi)部RAM中〔20H〕=75H〔0111010lB〕。執(zhí)行指令∶XCHDA,@R0結(jié)果為∶〔20H〕=01110110B=76H,〔A〕=00110101B=35H。精選課件 ⑵SWAPA 該指令將累加器A的高、低半字節(jié)交換,該操作也可看作是四位循環(huán)指令。 例:設(shè)〔A〕=36H〔00110110B〕 執(zhí)行SWAPA指令,執(zhí)行結(jié)果為〔A〕=63H〔01100011B〕。 由于十六進(jìn)制數(shù)或BCD碼都是以四位二進(jìn)制數(shù)表示,因此XCHD和SWAP指令主要用于實(shí)現(xiàn)十六進(jìn)制數(shù)或BCD碼的數(shù)位交換。
精選課件例:檢查傳送結(jié)果內(nèi)部RAM(10H)=00H,(30H)=40H,(40H)=10H,P1口為11001010B,分析指令執(zhí)行后各單元內(nèi)容。 MOVR0,#30H ;R0=30H MOVA,@R0 ;A=40H MOVR1,A ;R1=40H MOVB,@R1 ;B=10H MOV@R1,P1 ;(40H)=11001010B MOVP2,P1 ;P2=11001010B MOV10H,#20H ;(10H)=20H執(zhí)行結(jié)果:(10H)=20H,(30H)=40H,(40H)=CAH,P1=P2=CAH,A=40H,B=10H,R0=30H,R1=40H精選課件例:
將4位BCD碼倒序。設(shè)內(nèi)部數(shù)據(jù)存儲(chǔ)器2AH、2BH單元連續(xù)存放有4位BCD碼數(shù)符,試編一程序把4位BCD碼數(shù)符倒序排列。2AH2BH2AH2BH
a3a2a1a0 a0a1a2a3
MOV R0,#2AH MOV R1,#2BH MOV A,@R0;2AH單元內(nèi)容送A SWAP A;A的高4位與低4位交換(a2a3) MOV @R0,A MOV A,@R1;2BH單元內(nèi)容送A SWAP A ;A的高4位與低4位交換(a0a1) XCH A,@R0;2AH與2BH單元內(nèi)容交換 MOV @R1,AHERE:SJMP HERE精選課件4.3.2算術(shù)運(yùn)算類指令
算術(shù)運(yùn)算類指令都是通過算術(shù)邏輯運(yùn)算單元ALU對(duì)8位無符號(hào)數(shù)據(jù)進(jìn)行數(shù)據(jù)運(yùn)算處理的指令。它包括各種算術(shù)操作,其中有加、減、乘、除四那么運(yùn)算。80C51單片微機(jī)還有帶借位減法、比較指令。加法類指令包括加法、帶進(jìn)位的加法、加1以及二一十進(jìn)制調(diào)整。這些運(yùn)算指令大大加強(qiáng)了80C51的運(yùn)算能力。但ALU僅執(zhí)行無符號(hào)二進(jìn)制整數(shù)的算術(shù)運(yùn)算。對(duì)于帶符號(hào)數(shù)那么要進(jìn)行其他處理。其中包括加〔ADD)、帶進(jìn)位加〔ADDC)、帶借位減法(SUBB)、乘〔MUL)、除〔DIV)、加1〔INC)、減1(DEC)指令;借助溢出標(biāo)志,可對(duì)有符號(hào)數(shù)進(jìn)行補(bǔ)碼運(yùn)算;借助進(jìn)位標(biāo)志,可進(jìn)行多精度加、減運(yùn)算;也可以對(duì)壓縮BCD數(shù)進(jìn)行加法運(yùn)算。除了加1和減1指令之外,算術(shù)運(yùn)算結(jié)果將使進(jìn)位標(biāo)志〔CY〕、半進(jìn)位標(biāo)志〔AC〕、溢出標(biāo)志〔OV〕置位或復(fù)位。精選課件
這組指令的助記符為ADDADDA,Rn ;〔A〕+〔Rn〕→〔A〕ADDA,direct ;〔A〕+〔direct〕→〔A〕ADDA,@Ri ;〔A〕+〔〔Ri〕〕→〔A〕ADDA,#data ;〔A〕+data→〔A〕這組指令的源操作數(shù)為Rn、direct、@Ri或立即數(shù),而目的操作數(shù)為累加器A中的內(nèi)容。這組指令的功能是將工作存放器Rn、片內(nèi)RAM單元中的內(nèi)容、間接地址存儲(chǔ)器中的8位無符號(hào)二進(jìn)制數(shù)及立即數(shù)與累加器A中的內(nèi)容相加,相加的結(jié)果仍存放在A中。1加法指令精選課件這類指令將影響標(biāo)志位AC、CY、OV、P。當(dāng)和的D3位有進(jìn)位時(shí),將AC標(biāo)志置位,否那么為0。當(dāng)和的D7位有進(jìn)位時(shí),將CY標(biāo)志置位,否那么為0。對(duì)于帶符號(hào)數(shù)運(yùn)算,當(dāng)和的D7位與D6位中有一位進(jìn)位而另一位不產(chǎn)生進(jìn)位時(shí),溢出標(biāo)志OV置位,否那么為0?!睴V〕=1表示兩個(gè)正數(shù)相加,和為負(fù)數(shù);或兩個(gè)負(fù)數(shù)相加而和為正數(shù)的錯(cuò)誤結(jié)果。 例:設(shè)〔A〕=C3H,〔R0〕=AAH。 執(zhí)行指令:ADDA,R011000011B +10101010B101101101B 執(zhí)行結(jié)果:(A)=6DH,(CY)=1,(OV)=1,(AC)=0。對(duì)于有符號(hào)數(shù):D6位無進(jìn)位而D7位有進(jìn)位,故OV=1,即出現(xiàn)兩個(gè)負(fù)數(shù)相加,結(jié)果為正數(shù)的錯(cuò)誤。對(duì)于無符號(hào)數(shù):結(jié)果是(A)=6DH,(CY)=1,(OV)=1,(AC)=0。精選課件
ADDCA,Rn;〔A〕←〔A〕+〔Rn〕+〔CY〕ADDCA,direct;(A〕←〔A〕+〔direct〕+〔CY〕ADDCA,@Ri;〔A〕←〔A〕+〔〔Ri〕〕+〔CY〕ADDCA,#data;〔A〕←〔A〕+#data+〔CY〕
這組指令的功能是將工作存放器Rn、片內(nèi)RAM單元中的內(nèi)容、間接地址存儲(chǔ)器中的8位無符號(hào)二進(jìn)制數(shù)及立即數(shù)與累加器A的內(nèi)容和當(dāng)前進(jìn)位標(biāo)志CY的內(nèi)容相加,相加的結(jié)果仍存放在A中。這組指令常用于多字節(jié)數(shù)相加。2帶進(jìn)位加法指令精選課件這類指令將影響標(biāo)志位AC、CY、OV、P。當(dāng)和的D3位有進(jìn)位時(shí),將AC標(biāo)志置位,否那么清0。當(dāng)和的D7位有進(jìn)位時(shí),將CY標(biāo)志置位,表示和數(shù)溢出,否那么清0。對(duì)于帶符號(hào)數(shù)運(yùn)算,當(dāng)和的D7位與D6位中有一位進(jìn)位而另一位不產(chǎn)生進(jìn)位時(shí),溢出標(biāo)志OV置位,否那么為0?!睴V〕=1表示兩個(gè)正數(shù)相加,和為負(fù)數(shù);或兩個(gè)負(fù)數(shù)相加而和為正數(shù)的錯(cuò)誤結(jié)果。精選課件 例:設(shè)〔A〕=C3H,〔R0〕=AAH,〔CY〕=1。 執(zhí)行指令:ADDCA,R0 11000011 +10101010 +1(CY) 01101110 執(zhí)行結(jié)果:〔A〕=6EH,〔CY〕=1,〔OV〕=l, 〔AC〕=0。對(duì)于帶符號(hào)數(shù)的帶進(jìn)位相加,溢出標(biāo)志為1,意味著出錯(cuò),上例為兩個(gè)負(fù)數(shù)相加,出現(xiàn)結(jié)果為正數(shù)的錯(cuò)誤。精選課件例:(A)=B3H,(R1)=56H。 執(zhí)行ADDA,R1指令: B3H10110011 +56H+01010110109H100001001
CY=1CY=1,OV=0,AC=0假設(shè)兩個(gè)數(shù)是無符號(hào)數(shù),那么B3H+56H=109H,答案正確。假設(shè)兩個(gè)數(shù)是帶符號(hào)數(shù),那么B3H的原碼是(–77D),56H原碼為86D(–77D)+86D=09D,答案也是正確的,因?yàn)镺V=0。1精選課件
SUBB A,Rn ;(A)-(Rn)-(CY)→(A)SUBB A,drect ;(A)一(drect)一(CY)→(A)SUBB A,@Ri ;(A)一((Ri))一(CY)→(A)SUBB A,#dala ;(A)-data-(CY)→(A) 這組指令的功能是從A中減去進(jìn)位位CY和指定的變量,結(jié)果〔差〕存入A中。假設(shè)D7位有借位那么CY置1,否那么CY清0;假設(shè)D3位有借位,那么AC置1,否那么AC清0。假設(shè)D7位和D6位中有一位需借位而另一位不借位,那么OV置1;OV位用于帶符號(hào)的整數(shù)減法。OV=1,那么表示正數(shù)減負(fù)數(shù)結(jié)果為負(fù)數(shù),或負(fù)數(shù)減正數(shù)結(jié)果為正數(shù)的錯(cuò)誤結(jié)果。需要注意的是,在80C51指令系統(tǒng)中沒有不帶借位的減法。如果需要的話,可以在“SUBB〞指令前,用“CLRC〞指令將CY先清零。
3.帶借位減法指令精選課件
MUL AB
乘法指令的功能是將A和B中兩個(gè)無符號(hào)8位二進(jìn)制數(shù)相乘,所得的16位積的低8位存于A中,高8位存于B中。如果乘積大于255時(shí),即高位B不為0時(shí),OV置位;否那么OV置0。CY總是清0。例:設(shè)〔A〕=50H〔80D〕,〔B〕=A0H〔160D〕。執(zhí)行指令:MULAB 即80×160=12800=3200H執(zhí)行結(jié)果:乘積3200H〔12800〕,〔A〕=00H,〔B〕=32H, 〔OV〕=1,〔CY〕=0。4乘法指令精選課件 5除法指令 DIV AB
除法指令的功能是將A中無符號(hào)8位二進(jìn)制數(shù)除以B中的無符號(hào)8位二進(jìn)制數(shù),所得商的二進(jìn)制數(shù)局部存于A,余數(shù)局部存于B中,并將CY和OV置0。當(dāng)除數(shù)〔B〕=0時(shí),結(jié)果不定,那么OV置1。CY總是清0。例:設(shè)〔A〕=FBH〔251D〕,〔B〕=12H〔18D〕。執(zhí)行指令:DIVAB執(zhí)行結(jié)果:〔A〕=0DH〔商為13〕,〔B〕=11H〔余數(shù)為I7〕〔OV〕=0,〔CY〕=0。
精選課件INC Rn ;(Rn)←〔Rn〕+1INC direct ;(direct)←〔direct〕+1INC @Ri ;((Ri))←〔〔Ri〕〕+1INC A ;〔A〕←〔A〕+lINC DPTR ;〔DPTR〕←〔DPTR〕+1
這組指令的功能是將工作存放器Rn、片內(nèi)RAM單元中的內(nèi)容、間接地址存儲(chǔ)器中的8位無符號(hào)二進(jìn)制數(shù)、累加器A和數(shù)據(jù)指針DPTR的內(nèi)容加1,相加的結(jié)果仍存放在原單元中。這類指令不影響各個(gè)標(biāo)志位。
6增量(加1)指令
精選課件 當(dāng)指令中的direct為P0~P3端口(地址分別為內(nèi)部RAM的80H、90H、A0H、B0H)時(shí),其功能是修改輸出口的內(nèi)容,指令執(zhí)行過程中,首先讀入端口內(nèi)容,在CPU中加1,再輸出到端口,要注意的是讀入來自端口的鎖存器而不是端口的引腳。這類指令具有讀-修改-寫的功能。例:設(shè)〔R0〕=7EH,〔7EH〕=FFH.〔7FH〕=40H。 INC @R0 ;FFH+1=00H仍存入7EH單元 INC R0 ;7EH+1=7FH存入〔R0〕 INC @R0 ;40H+1=41H存入〔7FH〕執(zhí)行結(jié)果為〔R0〕=7FH,〔7EH〕=0FFH.〔7FH〕=41H精選課件
DEC Rn ;〔Rn〕-1→〔Rn〕DEC direct ;〔direct〕-1→〔direct〕DEC @Ri ;〔〔Ri〕〕-1→〔〔Ri〕〕DEC A ;〔A〕-1→〔A〕
這組指令的功能是將工作存放器Rn、片內(nèi)RAM單元中的內(nèi)容、間接地址存儲(chǔ)器中的8位無符號(hào)二進(jìn)制數(shù)和累加器A的內(nèi)容減1,相減的結(jié)果仍存放在原單元中。 這類指令位不影響各個(gè)標(biāo)志。7減1指令精選課件需要注意:執(zhí)行對(duì)并行I/O口的輸出內(nèi)容減1操作,是將該口輸出鎖存器的內(nèi)容讀出并減1,再寫入鎖存器,而不是對(duì)該輸出引腳上的內(nèi)容進(jìn)行減l操作。例:設(shè)〔R0〕=7FH,〔7EH〕=00H,〔7FH〕=40H。執(zhí)行指令:DEC @R0;〔7FH〕一1=40H—l=3FH→〔7F〕DECR0 ;〔R0〕一l=7FH—l=7EH→〔R0〕DEC @R0;〔7EH〕一l=00H—l=FFH→〔7E〕執(zhí)行結(jié)果:〔R0〕=7EH,〔7EH〕=FFH,〔7FH〕=3FH。精選課件
DA A
該指令的功能是對(duì)BCD碼的加法結(jié)果進(jìn)行調(diào)整。說明:BCD碼采用四位二進(jìn)制數(shù)編碼,并且只采用了其中的十個(gè)編碼,即0000~1001,分別代表BCD碼0~9,而1010~1111為無效碼。當(dāng)相加結(jié)果大于9,說明已進(jìn)入無效編碼區(qū);當(dāng)相加結(jié)果有進(jìn)位,說明已跳過無效編碼區(qū)。凡結(jié)果進(jìn)入或跳過無效編碼區(qū)時(shí),結(jié)果是錯(cuò)誤的,相加結(jié)果均比正確結(jié)果小6(差6個(gè)無效編碼)。8二一十進(jìn)制調(diào)整指令
精選課件十進(jìn)制調(diào)整的修正方法為:
當(dāng)累加器低四位大于9或半進(jìn)位標(biāo)志AC=1時(shí),那么進(jìn)行低四位加6修正 (A0~3)+6→(A0~3) 即(A)=(A)+06
當(dāng)累加器高四位大于9或進(jìn)位標(biāo)志CY=1時(shí),進(jìn)行高四位加6修正 (A4~7)+6→(A4~7) 即(A)=(A)+60H精選課件例:設(shè)〔A〕=01010110=56BCD, 〔R3〕=01100111=67BCD,〔CY〕=1。執(zhí)行下述二條指令:ADDCA,R3 DAA執(zhí)行ADDCA,R3〔A〕01010110(56BCD)(R3)01100111(67BCD)十〔CY〕1.10111110(高、低四位均大于9)再執(zhí)行DAA01100110(加66H操作)Cy=100100100(124BCD)即BCD碼數(shù)56+67+1=124。經(jīng)DAA指令校正后,答案正確。精選課件
例:二個(gè)多字節(jié)無符號(hào)數(shù)相加(課本P86)設(shè)有兩個(gè)四位BCD碼分別存在內(nèi)部RAM的50H、51H和60H、61H單元中,試編寫程序,求兩個(gè)BCD碼數(shù)之和,結(jié)果存入內(nèi)部40H、41H單元。 MOVR0,#50H ;被加數(shù)首址 MOVR1,#60H ;加數(shù)首址 MOVA,@R0 ;取被加數(shù) ADDA,@R1 ;與加數(shù)相加 DAA ;二-十進(jìn)制調(diào)整 MOV40H,A ;存和 INCR0 ;高位相加 INCR1 MOVA,@R0
ADDCA,@R1 DAA MOV41H,A
精選課件4.3.3邏輯運(yùn)算類指令
邏輯運(yùn)算類指令包括:與、或、異或、去除、求反、移位等操作。助記符有ANL、ORL、XRL、RL、RLC、RR、RRC、CPL、CLR等九種。只按位進(jìn)行邏輯運(yùn)算,結(jié)果不影響PSW中標(biāo)志位。
精選課件
這組指令的助記符為ANL,用符號(hào)“∧〞表示:ANLA,Rn ;〔A〕←〔A〕∧〔Rn〕ANLA,direct ;〔A〕←〔A〕∧〔direct〕ANLA,@Ri ;〔A〕←〔A〕∧〔〔Ri〕〕ANLA,#data ;〔A〕←〔A〕∧#dataANLdirect,A ;〔direct〕←〔direct〕∧〔A〕ANLdirect,#data ;〔direct〕←〔drect〕∧#data指令功能是將目的地址單元中的數(shù)和源地址單元中的數(shù)按“位〞相“與〞,其結(jié)果放回目的地址單元中。1.邏輯“與〞運(yùn)算指令精選課件例:設(shè)〔A〕=A3H〔10100011B〕,〔R0〕=AAH〔10101010B〕。執(zhí)行指令:ANLA,Rn執(zhí)行結(jié)果為〔A〕=A2H〔10100010B〕。例:設(shè)P1=FFH執(zhí)行指令:ANLP1,#0F0H執(zhí)行結(jié)果為P1=F0H,這時(shí)P1.7~P1.4位狀態(tài)不變,P1.3~P1.0位被去除。邏輯“與〞運(yùn)算指令用做去除或屏蔽某些位。精選課件
這組指令的助記符為ORL,用符號(hào)“∨〞表示:
ORLA,Rn;〔A〕←〔A〕∨〔Rn〕ORLA,direct ;〔A〕←〔A〕∨〔direct〕ORLA,@Ri ;〔A〕←〔A〕∨〔〔Ri〕〕ORLA,#data ;(A)←(A)∨#dataORLdirect,A ;〔direct〕←〔direct〕∨〔A〕ORLdirect,#data;(direct)←〔direct〕∨#data
指令功能是將目的地址單元中的數(shù)和源地址單元中的數(shù)按“位〞相“或〞,其結(jié)果放回目的地址單元中。2.邏輯“或〞運(yùn)算指令精選課件例:設(shè)〔A〕=A3H〔10100011B〕,〔R0〕=45H〔01000101B〕。執(zhí)行指令:ORLA,R0執(zhí)行結(jié)果:〔A〕=E7H〔11100111B〕。邏輯或運(yùn)算指令用做指定位強(qiáng)迫置位。給某些位置1,合并二個(gè)數(shù)中的“1〞。精選課件
這組指令的助記符為XRL,用符號(hào)“⊕〞表示,其運(yùn)算規(guī)那么為: 0⊕0=0 1⊕1=0 0⊕1=1 1⊕0=1
XRL A,Rn ;〔A〕←〔A〕⊕〔Rn〕XRL A,drect ;〔A〕←〔A〕⊕〔direct〕XRL A,@Ri ;〔A〕←〔A〕⊕〔〔Ri〕〕XRL A,#data;〔A〕←〔A〕⊕#dataXRL direct,A;〔direct〕←〔direct〕⊕〔A〕XRL direct,#data;〔direct〕←〔direct〕⊕#data
指令功能是將目的地址單元中的數(shù)和源地址單元中的數(shù)按“位〞相“異或〞,其結(jié)果放回目的地址單元中。3.邏輯“異或〞運(yùn)算指令精選課件例:設(shè)〔A〕=A3H〔10100011B〕,〔R0〕=45H〔01000l0lB〕。執(zhí)行指令為XRL A,R0
10100011 ⊕ 01000101 11100110
執(zhí)行結(jié)果為〔A〕=E6H〔111001l0B〕。用于對(duì)目的操作數(shù)的某些位取反,也可以判兩個(gè)數(shù)是否相等,假設(shè)相等那么結(jié)果為0。精選課件
包括帶進(jìn)位C和不帶進(jìn)位C的循環(huán)左移和循環(huán)右移等四條指令。對(duì)于帶進(jìn)位的循環(huán)移位,C的狀態(tài)由移入的數(shù)位決定,其他狀態(tài)標(biāo)志位不受影響。
(1)循環(huán)右移指令:
RRA
它是將累加器的內(nèi)容逐位循環(huán)右移一位,并且a0的內(nèi)容移到a7,見圖〔a〕所示。此操作不影響標(biāo)志位。例:設(shè)〔A〕=A6H〔10100110〕,執(zhí)行RRA指令,執(zhí)行結(jié)果=53H〔01010011B〕。4.
累加器移位/循環(huán)指令精選課件(2)帶進(jìn)位循環(huán)右移指令:
RRCA
它是將累加器的內(nèi)容和進(jìn)位位一起循環(huán)右移一位,并且a0移入進(jìn)位位CY,CY的內(nèi)容移到a7,見圖〔b〕所示。此操作不影響CY之外的標(biāo)志位。例:設(shè)(A)=B4H(10110100B),(CY)=1,執(zhí)行RRCA指令,執(zhí)行結(jié)果為:(A)=DAH(11011010B),(CY)=0精選課件(3)循環(huán)左移指令: RL A
它是將累加器的內(nèi)容逐位循環(huán)左移一位,并且a7的內(nèi)容移到a0,見圖〔c〕所示。此操作不影響標(biāo)志位。例:設(shè)〔A〕=3AH〔00111010B〕,執(zhí)行RLA指令, 執(zhí)行結(jié)果:〔A〕=74H〔01110l00B〕。精選課件⒋帶進(jìn)位循環(huán)左移指令:
RLC A它是將累加器的內(nèi)容和進(jìn)位位一起循環(huán)左移一位,并且a7移入進(jìn)位位CY,CY的內(nèi)容移到a0,見圖〔d〕所示。此操作不影響CY之外的標(biāo)志位。例:設(shè)〔A〕=3AH〔00111010B〕,〔CY〕=1,執(zhí)行RLCA指令,執(zhí)行結(jié)果為:(A)=75H〔01110101B〕,〔CY〕=0精選課件 CPLA
對(duì)進(jìn)行累加器的內(nèi)容逐位取反,結(jié)果仍存在A中。此操作不影響標(biāo)志位。例:設(shè)〔A〕=21H(00100001B),執(zhí)行CPLA指令, 執(zhí)行結(jié)果:〔A〕=DEH(11011110B)。5.累加器按位取反指令
精選課件 CLR A
對(duì)累加器進(jìn)行清0,此操作不影響標(biāo)志位。例:設(shè)〔A〕=44H,執(zhí)行CLRA指令, 執(zhí)行結(jié)果:〔A〕=00H。6.累加器清0指令
精選課件例10:
數(shù)據(jù)的拆分與拼裝要求:從(30H)==x7x6x5x4x3x2x1x0中取出高5位,從(31H)=y7y6y5y4y3y2y1y0中取出低3位,拼裝后存入40H中,(40H)=Y2Y1Y0X7X6X5X4X3
地址 機(jī)器碼 ORG1000H1000E530MOVA,30H1002C4SWAPA;X3X2X1X0X7X6X5X4100323 RLA;X2X1X0X7X6X5X4X3左移了5位1004F540 MOV40H,A1006 53401FANL40H,#00011111B1009 E531 MOVA,31H100B 75F020MOVB,#20H100E A4 MULAB;(A)=Y2Y1Y000000左移了5位100F 54E0 ANLA,#11100000B1011 4240 ORL40H,A1013 2113HERE:AJMPHERE注:實(shí)現(xiàn)左移5位,采用了兩種方法,即移位和乘法。精選課件4.3.4控制程序轉(zhuǎn)移類指令 程序的順序執(zhí)行是由PC自動(dòng)加1來實(shí)現(xiàn)的,但在應(yīng)用系統(tǒng)中,往往會(huì)遇到一些情況,需要強(qiáng)迫改變程序執(zhí)行順序,比方調(diào)用子程序,比方根據(jù)檢測(cè)值與設(shè)定值的比較結(jié)果要求程序轉(zhuǎn)移到不同的分支入口等。 80C51設(shè)有豐富的控制轉(zhuǎn)移指令,可分為無條件轉(zhuǎn)移指令、條件轉(zhuǎn)移指令、循環(huán)轉(zhuǎn)移指令、子程序調(diào)用和返回指令及空操作指令等。但不包括布爾變量控制程序轉(zhuǎn)移指令。采用助記符有:AJMP、LJMP、SJMP、JZ、JNZ、CJNE、DJNZ、ACALL、LCALL、RET、RETI、NOP等13種。精選課件
指令機(jī)器碼SJMPrel 80
relAJMPaddr11 a10a9a800001
a7~a0LJMPaddrl6 02
addr15~8
addr7~0JMP@A+DPTR 73這類指令的功能是程序無條件地轉(zhuǎn)移到各自指定的目標(biāo)地址去執(zhí)行,不同的指令形成的目標(biāo)地址不同。
1.無條件轉(zhuǎn)移指令
精選課件 ((1)長(zhǎng)轉(zhuǎn)移指令 LJMPaddrl6 02addr15~8addr7~0該指令提供16位地址,目標(biāo)地址由指令第二字節(jié)(高8位地址)和第三字節(jié)(低8位地址)組成。因此,程序轉(zhuǎn)向的目標(biāo)地址可以包含程序存儲(chǔ)器的整個(gè)64KB空間。例:設(shè)〔PC〕=0123H,標(biāo)號(hào)ADR所指單元地址為3456H。 執(zhí)行指令∶LJMPADR 執(zhí)行結(jié)果為〔PC〕=3456H 程序轉(zhuǎn)向3456H單元執(zhí)行。精選課件((2)絕對(duì)轉(zhuǎn)移指令A(yù)JMPaddr11 a10a9a800001
a7~a0A10A9A800001A7A6A5A4A3A2A1A0該指令提供11位地址,目標(biāo)地址由指令第一字節(jié)的高三位a10~a8和指令第二字節(jié)的a7~a0所組成。以指令提供的11位地址去取代當(dāng)前PC的低11位,形成新的PC值,即為本絕對(duì)轉(zhuǎn)移地址。因此,程序的目標(biāo)地址必須包含AJMP指令后第一條指令的第一個(gè)字節(jié)(即當(dāng)前PC地址)在內(nèi)的2KB范圍內(nèi)(即高5位地址必須相同)。精選課件PC高5位(保持不變)PC低11位A10A9A800001A7A6A5A4A3A2A1A0操作碼(第一字節(jié))操作數(shù)(第二字節(jié))11位轉(zhuǎn)移地址的形成示意圖程序計(jì)數(shù)器PC2)絕對(duì)轉(zhuǎn)移指令A(yù)JMPaddr11;PC+2PC,addr11PC.10~PC.0精選課件例:設(shè)〔PC〕=0456H(0000010056),標(biāo)號(hào)JMPADR所指的單元為0123H。執(zhí)行指令∶AJMPJMPADR 機(jī)器碼為0010000100100011執(zhí)行結(jié)果程序轉(zhuǎn)向?yàn)椤睵C〕=0123H。精選課件
((3)短轉(zhuǎn)移指令:
SJMPrel10000000相對(duì)地址
其目標(biāo)地址是由當(dāng)前PC〔程序計(jì)數(shù)器〕值和指令的第二字節(jié)提供的8位帶符號(hào)的相對(duì)地址相加而成的。指令可轉(zhuǎn)向指令前128B或指令后127B。rel為8位帶符號(hào)數(shù)。 (PC)=(PC)+2 ;當(dāng)前PC地址 (PC)=(PC)+rel當(dāng)相對(duì)地址為FEH(-02)時(shí),SJMP指令實(shí)現(xiàn)原地轉(zhuǎn)圈的運(yùn)行狀態(tài)。精選課件上面的三條指令,如果要仔細(xì)分析的話,區(qū)別較大,但初學(xué)時(shí),可不理會(huì)這么多,統(tǒng)統(tǒng)理解成:JMP標(biāo)號(hào),也就是跳轉(zhuǎn)到一個(gè)標(biāo)號(hào)處。事實(shí)上,LJMP標(biāo)號(hào),在前面的例程中我們已接觸過,并且也知道如何來使用了。而AJMP和SJMP也是一樣。那么他們的區(qū)別何在呢?在于跳轉(zhuǎn)的范圍不一樣。好比跳遠(yuǎn),LJMP一下就能跳64K這么遠(yuǎn)〔當(dāng)然近了更沒關(guān)系了〕。而AJMP最多只能跳2K距離,而SJMP那么最多只能跳256這么遠(yuǎn)。原那么上,所有用SJMP或AJMP的地方都可以用LJMP來替代。精選課
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年軍隊(duì)文職人員招聘之軍隊(duì)文職管理學(xué)考前沖刺模擬試卷A卷含答案
- 2025年軍隊(duì)文職人員招聘之軍隊(duì)文職公共科目題庫檢測(cè)試卷B卷附答案
- 2025年消防設(shè)施操作員之消防設(shè)備高級(jí)技能能力提升試卷B卷附答案
- 采購分包資源配置合同(2篇)
- 2023年全國碩士研究生考試《管理類聯(lián)考綜合能力》試題真題及答案
- 2025年黨史競(jìng)賽知識(shí)題庫70題及答案
- 會(huì)計(jì)學(xué)成本會(huì)計(jì)模擬試題集
- 各行業(yè)各年度數(shù)據(jù)對(duì)比表格
- 泰坦尼克號(hào)的文化價(jià)值和社會(huì)反思:高中語文教學(xué)教案
- 經(jīng)濟(jì)學(xué)微觀經(jīng)濟(jì)學(xué)知識(shí)點(diǎn)歸納與解析
- 07SG111-1 建筑結(jié)構(gòu)加固施工圖設(shè)計(jì)表示方法
- 屋頂分布式光伏發(fā)電EPC項(xiàng)目 投標(biāo)方案(技術(shù)方案)
- 網(wǎng)約車停運(yùn)損失費(fèi)起訴狀模板
- 中國急性缺血性卒中診治指南(2023)解讀
- A型肉毒素治療知情同意書 注射知情同意書
- 混凝土采購項(xiàng)目整體供貨方案
- 血液透析導(dǎo)管溶栓及護(hù)理
- 公司外聘人員管理制度
- 慢病聯(lián)合用藥病
- 蘭州拉面-模板參考
- 武漢市2024屆高中畢業(yè)生二月調(diào)研考試(二調(diào))英語試卷(含答案)
評(píng)論
0/150
提交評(píng)論