單片機指令系統(tǒng)復(fù)習(xí).doc
《單片機指令系統(tǒng)復(fù)習(xí).doc》由會員分享,可在線閱讀,更多相關(guān)《單片機指令系統(tǒng)復(fù)習(xí).doc(12頁珍藏版)》請在裝配圖網(wǎng)上搜索。
一. 填空題 1. 指出以下程序順序執(zhí)行后每一條指令的結(jié)果。填寫在劃線部分。 (1)MOV A,#25H ; (A)25H (2)MOV 40H,#1AH ; (40H)=1AH (3)MOV R2,#33H ; (R2)= 33H (4)CLR C ; (C)= 0 (5)ADD A ,R2 ; (A)58H (6)ADDC A,40H; (A)72H (7)MOV RO,#40H ; (R0)=40H (8)ADDC A,RO ; (A)8CH 2. 在劃線部分寫出下列程序每一條指令執(zhí)行后其目的操作數(shù)的結(jié)果。 (1)MOV A,#OFOH; 0F0H (2) CPL A ; 0FH (3)ANL 30H,#00H ; 00H (4) ORL 30H, #BDH ; 0BDH (5)XRL 30H,A ; 0B2H 3. 若(A)=7AH,分別執(zhí)行下列指令后,A的值是多少?填在劃線部分。標(biāo)志位CY和OV的值各是多少考慮上下指令之間的聯(lián)系。 (1)ANL A,#0FFH ; 7AH (4)ORL A,#00H ; 7AH (2)ORL A,#0FFH ; 0FFH (5)XRL A,#0FFH ; 85H (3)ANL A,#00H ; 00H (6)XRL A,00H ; 7AH 二簡答題1. 8051單片機的指令系統(tǒng)有何特點?解:8051的指令系統(tǒng)由111條指令組成。如果按字節(jié)數(shù)分類,有49條單字節(jié)指令46條雙字節(jié)指令和16條三字節(jié)指令,以單字節(jié)指令為主;如果按照指令執(zhí)行時間分類,有64條單周期指令、45條雙周期指令和條四周期指令,以單周期指令為主。8051的指令系統(tǒng)具有以下特點:(1)存儲效率高、執(zhí)行速度快,可以進(jìn)行直接地址到直接地址的數(shù)據(jù)傳送,能把一個并行I/O口中的內(nèi)容傳送到內(nèi)部RAM單元中而不必經(jīng)過累加器A或工作寄存器Rn。這樣可以大大提高傳送速度和緩解累加器A的瓶頸效應(yīng)。(2)用變址尋址方式訪問程序存儲器中的表格,將程序存儲器單元中的固定常數(shù)或表格字節(jié)內(nèi)容傳送到累加器A中。這為編成翻譯算法提供了方便。(3)在算術(shù)運算指令中設(shè)有乘法和除法指令(4)指令系統(tǒng)中一些對I/O口進(jìn)行操作的指令具有“讀修改寫”的功能。這一功能指:在執(zhí)行讀鎖存器的指令時,CPU首先完成將鎖存器的值通過緩沖器BUF2度入內(nèi)部,進(jìn)行修改、改變,然后重新寫到鎖存器中去。這種類型指令包含所有的邏輯操作和位操作指令。(5)8051單片機內(nèi)部有一個布爾處理器,對為地址空間具有豐富的位操作指令。布爾操作類指令有17條,包括布爾傳送指令、布爾狀態(tài)控制指令、布爾邏輯操作指令、布爾條件轉(zhuǎn)移指令。2. 8051單片機指令系統(tǒng)按功能可分為幾類?具有幾種尋址方式?它們的尋址范圍如何?解:MCS-51單片機指令系統(tǒng)按功能可分為5類: (1)數(shù)據(jù)傳送指令2)算術(shù)運算指令3)邏輯運算和移位指令4)控制轉(zhuǎn)移指令5)位操作指令 MCS-51單片機的指令系統(tǒng)提供了七種尋址方式,其對應(yīng)的尋址范圍如下表:尋址方式使用的變量尋址范圍立即尋址程序存儲器直接尋址內(nèi)部RAM低128個字節(jié);特殊功能寄存器SFR寄存器尋址R0R7;A、B、DPTR、C寄存器間接尋址R0、R1、SP內(nèi)部RAM、堆棧指針SPR0、R1、DPTR外部RAM變址尋址A+PC、A+DPTR程序存儲器相對尋址PC+偏移量程序存儲器位尋址內(nèi)部RAM低128B位尋址區(qū)可位尋址的特殊功能寄存器位3. 訪問特殊功能寄存器和外部數(shù)據(jù)存儲器應(yīng)采用哪種尋址方式?解: 訪問特殊功能寄存器,應(yīng)采用直接尋址、位尋址方式。訪問外部數(shù)據(jù)存儲器,應(yīng)采用寄存器間接尋址方式。在0255B范圍內(nèi),可用寄存器R0、R1間接尋址:MOVX A,R0 或 MOVX A,R1 MOVX R0,A 或 MOVX R1,A在064KB范圍內(nèi),可用16位寄存器DPTR間接尋址MOVX A,DPTR MOVX DPTR,A4. “DA A”指令的作用是什么?怎樣使用?解:這條指令是在進(jìn)行BCD碼加法運算時,跟在“ADD”和“ADDC”指令之后,用來對BCD碼的加法運算結(jié)果自動進(jìn)行修正的,使其仍為BCD碼表達(dá)形式。在計算機中,遇到十進(jìn)制調(diào)整指令時,中間結(jié)果的修正是由ALU硬件中的十進(jìn)制修正電路自動進(jìn)行的。用戶不必考慮何時該加“6”,使用時只需在上述加法指令后面緊跟一條“DA A”指令即可。5. 片內(nèi)RAM 20H2FH單元中的128個位地址與直接地址00H7FH形式完全相同,如何在指令中區(qū)分出位尋址操作和直接尋址操作?解: 雖然內(nèi)部RAM位尋址區(qū)的位地址范圍00H7FH與低128個單元的單元地址范圍00H7FH形式完全相同,但是在應(yīng)用中可以通過指令的類型區(qū)分單元地址和位地址。位尋址的操作只適用于下列位指令,而直接尋址操作對這些指令是無效的。MOV C,bit MOV bit,C CLR bit SETB bit CPL bit ANL C,bit ANLC,/bit JB bit,rel JNB bit,rel6. 8051單片機指令系統(tǒng)中有長跳轉(zhuǎn)LJMP,長調(diào)用LCALL指令,為何還設(shè)置了絕對跳轉(zhuǎn)AJMP,絕對調(diào)用ACALL指令?在實際使用是應(yīng)怎樣考慮?解: 在實際應(yīng)用中,可從尋址范圍和指令長度兩個方面來選擇長跳轉(zhuǎn)指令LJMP和短跳轉(zhuǎn)指令A(yù)JMP、長調(diào)用指令LCALL和短調(diào)用指令A(yù)CALL。長跳轉(zhuǎn)LJMP在64KB范圍內(nèi)轉(zhuǎn)移,而短跳轉(zhuǎn)AJMP只能在2KB空間轉(zhuǎn)移。長調(diào)用LCALL調(diào)用位于64KB程序空間的子程序,而短調(diào)用ACALL調(diào)用位于2KB程序空間范圍的子程序。AJMP、ACALL指令代碼長度為個字節(jié);LJMP、LCALL指令代碼長度為個字節(jié)。7. SJMP,AJMP和LJMP指令在功能上有何不同?解: 指令的轉(zhuǎn)移范圍不同。SJMP是256B范圍內(nèi)的相對轉(zhuǎn)移指令,AJMP是2KB范圍內(nèi)的無條件短跳轉(zhuǎn)指令,LJMP是64KB范圍內(nèi)的無條件長跳轉(zhuǎn)指令。8. MOVC A,A+DPTR與MOVX A,DPTR指令有何不同?解: MOVC指令是針對程序存儲器的數(shù)據(jù)傳送指令,A+DPTR基址變址尋址時,DPTR為常數(shù)且是表格的首地址,A為從表格首址到被訪問字節(jié)地址的偏移量。MOVX指令是針對外部RAM的數(shù)據(jù)傳送指令,DPTR寄存器間接尋址時,尋址范圍在064KB。9. 在“MOVC A,A+DPTR”和“MOVC A,A+PC”中,分別使用了DPTR和PC作基址,請問這兩個基址代表什么地址?使用中有何不同?解: 使用A+DPTR基址變址尋址時,DPTR為常數(shù)且是表格的首地址,A為從表格首址到被訪問字節(jié)地址的偏移量。使用A+PC基址變址尋址時,PC仍是下條指令首地址,而A則是從下條指令首地址到常數(shù)表格中的被訪問字節(jié)的偏移量。10. 設(shè)片內(nèi)RAM中的(40H)=50H,寫出執(zhí)行下列程序段后寄存器A和R0,以及片內(nèi)RAM中50H和51H單元的內(nèi)容為何值?MOV A,40HMOV R0,AMOV A,#00MOV R0,AMOV A,#30HMOV 51H,AMOV 52H,#70H解:結(jié)果為:(A)30H (R0)=50H (50H)00H (51H)30H11. 設(shè)堆棧指針(SP)=60H,片內(nèi)RAM中的(30H)=24H,(31H)=10H。執(zhí)行下列程序段后,61H,62H,30H,31H,DPTR及SP中的內(nèi)容將有何變化?解:結(jié)果為: (61H)=24H (62H)=10H (30H)=00H (31H)=0FFH DPTR=2410HSP=60H12. 在8051的片內(nèi)RAM中,已知(20H)=30H,(30H)=40H,(40H)=50H,(50H)=55H。分析下面各條指令,說明源操作數(shù)的尋址方式,分析按順序執(zhí)行各條指令后的結(jié)果。MOV A,40HMOV R0,AMOV P1,,#80HMOV R0,20HMOV DPTR,#2000H MOV 40H,30H MOV R0,30H MOV D0H,R0 MOV 10H,#10HMOV 50H,R0MOV A,R0MOV P2,P1解: 指令 源操作數(shù)的尋址方式 執(zhí)行指令后的結(jié)果MOV A,40H 直接尋址 (A)=50HMOV R0,A 寄存器尋址 (R0)=50HMOV P1,#80H 立即尋址 (P1)=80HMOV R0,20H 寄存器間接尋址 (50H)=30HMOV DPTR,#2000H 立即尋址 (DPTR)=2000HMOV 40H,30H 直接尋址 (40H)=40HMOV R0,30H 直接尋址 (R0)=40HMOV D0H,R0 直接尋址 (D0H)=40HMOV 10H,#10H 立即尋址 (10H)=10HMOV A,R0 寄存器間接尋址 (A)=40HMOV P2,P1 寄存器尋址 (P2)=80H13指出下列程序中每一條指令的劃線操作數(shù)的尋址方式及其完成的操作。 MOV 3FH ,#40H ;3FH為直接尋址,指令把數(shù)40H送地址3FH中 MOV A ,3FH ;A為特殊寄存器尋址,把地址3FH中的內(nèi)容送A中 MOV R1, #3FH ;3FH為立即尋址,指令把數(shù)3FH送寄存器R1中 MOV A, R1 ;R1間接尋址, R1的內(nèi)容3FH作地址中的內(nèi)容送A中 MOV 3FH, R1 ;寄存器尋址, R1的內(nèi)容送地址3FH中 14. 內(nèi)部RAM的4FH單元,可用哪幾種方式尋址?分別舉例說明。 答: 1、直接尋址:MOV R1, 4FH 2、間接尋址:MOV R1,#4FH和MOV A, R1 15. 特殊功能寄存器可用哪幾種方式尋址?分別舉例說明。 答:只有直接尋址: MOV A, 90H (MOV A, P1 ); 該指令只有機器碼E590H。 16. 編程:將立即數(shù)55H送入內(nèi)部RAM的30H單元。 (1)用立即尋址 (2)用寄存器尋址 (3)用寄存器間接尋址 答: (1)MOV 30H ,#55H (2)MOV R1 ,#55H MOV 30H , R1(3)MOV R1,#30H MOV R1 ,#55H 17. 用指令實現(xiàn)下述數(shù)據(jù)傳送: (1)內(nèi)部RAM 30H單元的內(nèi)容送內(nèi)部RAM40H單元。 答: MOV 40H , 30H (2)外部RAM 30H單元的內(nèi)容送R0寄存器 答: MOV R1,#30H MOVX A,R1 MOV R0 ,A (3)外部RAM 30H 單元的內(nèi)容送內(nèi)部RAM 30H單元 答: MOV R1,#30H MOVX A,R1 MOV 30H,A (4)外部RAM 2000H單元的內(nèi)容送內(nèi)部RAM20H單元 答: MOV DPTR,#2000H MOVX A,DPTR MOV 20H,A (5)外部ROM 2000H單元的內(nèi)容送內(nèi)部RAM20H單元 答: MOV DPTR,#2000H MOV A,#00H MOVC A,A+DPTR MOV 20H,A (6)外部ROM 2000H單元內(nèi)容送外部RAM20H單元。答: MOV DPTR,#2000H MOV A,#00H MOVC A,A+DPTR MOV R1,#20H MOVX R1,A18. 指出下列指令執(zhí)行后目的操作數(shù)的結(jié)果,并寫出每條指令的機器碼??刹还苌舷戮渎?lián)系。其中(R0)=30H。 MOV 30H #52H ;(30H)=52H MOV A,#78H ;(A)=78H MOV A,#30H ;(A)=30H MOV R0,#30H ;(R0)=30H MOV A,R0 ;(A)=52H,把30H的內(nèi)容送A中。 19.指出在下列各條指令中,45H代表什么尋址方式? (1)MOV A, #45H ;立即尋址 (2)MOV 45H,#46H ;立即尋址 (3)MOV 45H,46H ;直接尋址 (4)MOV C,45H ;位尋址 20. 分析下列指令順序執(zhí)行的結(jié)果,并寫出每條指令的機器碼。 (1)MOV A,#32H ;7432H (2)MOV DPTR,#2020H ;902020H (3)MOVX DPTR,A ;F0H (4)MOV 20H, #45H; 752045H(4)MOV R0 ,#20H ;7820H (5)MOVX A ,R0 ;E2H (6)MOV 30H ,A ;F530H 結(jié)果:片外存儲器RAM2020H內(nèi)容為32H,(30H)=(A)=45H 23. 指出以下程序順序執(zhí)行后每一條指令的結(jié)果。填寫在劃線部分。 (1)MOV A,#25H ; (A)25H (2)MOV 40H,#1AH ; (40H)=1AH (3)MOV R2,#33H ; (R2)= 33H (4)CLR C ; (C)= 0 (5)ADD A ,R2 ; (A)58H(6)ADDC A,40H; (A)72H(7)MOV R0,#40H ; (R0)=40H(8)ADDC A,R0 ; (A)8CH24. 在劃線部分寫出下列程序每一條指令執(zhí)行后其目的操作數(shù)的結(jié)果。 (1)MOV A,#0F0H ; 0F0H (2) CPL A ; 0FH (3)ANL 30H,#00H; 00H (4) ORL 30H, #BDH ; 0BDH (5)XRL 30H,A ; 0B2H 25. 若(A)=7AH,分別執(zhí)行下列指令后,A的值是多少?填在劃線部分。標(biāo)志位CY和OV的值各是多少?不考慮上下指令之間的聯(lián)系。 (1)ANL A,#0FFH ; 7AH(2)ORL A,#0FFH ; 0FFH (3)ANL A,#00H ; 00H (4)ORL A,#00H ; 7AH (5)XRL A,#0FFH ; 85H(6)XRL A,00H ; 7AH26. 請判斷下列各條指令的書寫格式是否有錯,如有錯說明原因:答 :打()為不存在指令. 1、mul r0r1 () 2、mov a,r7 () 3、mov a,#3000h () 4、movc a+dptr,a () 5、ljmp #1000h () 6、MOVX R0,B ()7、MOV A,30H ()8、MOVX A,30H () 9、ADDC A,R7 () 10、 ANL #99H ,36H ()27.閱讀下列程序段,寫出每條指令執(zhí)行后的結(jié)果,并說明此程序段完成什么功能? MOV R 1 ,#30H ;(R 1 )= 30H MOV A,#64H ;(A)= 64H ADD A,#47H ;(A)= 0ABH ,(CY)= 0 ,(AC)= 0 DA A ;(A)= 11 ,(CY)= 1 ,(AC)= 1 MOV R 1 ,A ;(R 1 )= 30H ,(30H)= 11H 此程序段完成的功能: 程序采用十六進(jìn)制運算指令完成十進(jìn)制數(shù)運算 64+47=11,且進(jìn)位為1。結(jié)果在30H單元。注意到DA A的功能。 28. 內(nèi)部RAM的4FH單元,可用哪幾種方式尋址?分別舉例說明。 答: 1. 直接尋址:MOV R1, 4FH 2. 間接尋址:MOV R1,#4FH和MOV A, R1 29. 編程:將立即數(shù)55H送入內(nèi)部RAM的30H單元。(1)用立即尋址 MOV 30H ,#55H(2)用寄存器尋址 MOV R1 ,#55H MOV 30H , R1(3)用寄存器間接尋址 MOV R1,#30H MOV R1 ,#55H 30. 用指令實現(xiàn)下述數(shù)據(jù)傳送: (1)內(nèi)部RAM 30H單元的內(nèi)容送內(nèi)部RAM40H單元。 答: MOV 40H , 30H (2)外部RAM 30H單元的內(nèi)容送R0寄存器 答: MOV R1,#30H MOVX A,R1 MOV R0 ,A (3)外部RAM 30H 單元的內(nèi)容送內(nèi)部RAM30H單元 答: MOV R1,#30H MOVX A,R1 MOV 30H,A (4)外部RAM 2000H單元的內(nèi)容送內(nèi)部RAM20H單元 答: MOV DPTR,#2000H MOVX A,DPTR MOV 20H,A (5)外部ROM 2000H單元的內(nèi)容送內(nèi)部RAM20H單元 答: MOV DPTR,#2000H MOV A,#00H MOVC A,A+DPTR MOV 20H,(6)外部ROM 2000H單元內(nèi)容送外部RAM20H單元。 答: MOV DPTR,#2000H MOV A,#00H MOVC A,A+DPTR MOV R1,#20H MOVX R1,A 三. 編程題 1.試編程實現(xiàn)內(nèi)部RAM25H單元與外部RAM5500H單元的數(shù)據(jù)交換。 MOV DPTR,#5500H MOVX A,DPTR XCH A,25H MOVX DPTR,A 2.試編程實現(xiàn)外部RAM2040H單元的內(nèi)容與3040H單元互換。 MOV DPTR,#2040H MOVX A,DPTR MOV 30H, A MOV DPTR,#3040H MOVX A,DPTR XCH A,30H MOVX DPTR,A MOV DPTR,#2040H MOV A,30H MOVX DPTR,A3. 試編程實現(xiàn)兩個無符號16位數(shù)的減法。被減數(shù)和減數(shù)分別存放在DATA1和DATA2為首址的內(nèi)部RAM中,低位在低地址單元,高位在后,差存于R3(低8位)和R4(高8位)中 .CLR C MOV R0,#DATA1 MOV A,R0 MOV R1,#DATA2 SUBB A,R1 MOV R3,A INC R0 INC R1 MOV A,R0 SUBB A,R1 MOV R4,A 4 若外部RAM的(2000H)=X,(2001H)=Y,編程實現(xiàn)Z=3X+2Y,結(jié)果存入內(nèi)部RAM 20H單元(設(shè)Z255) MOV DPTR,#2000H MOVX A,DPTR MOV B,#03HMUL AB MOV B,A ;存3X MOV DPTR,#2001H MOVX A,DPTR MOV 20H,A ADD A,20H ;計算2Y ADD A,B ;3X+2Y MOV 20H,A 5. 完成以下的數(shù)據(jù)傳送過程。解:(1)R1的內(nèi)容傳送到R0 ; MOV A, R1 MOV R0, A(2)片外RAM 20H單元內(nèi)容送R0 ; MOV DPTR, #0020H MOVX A,DPTR MOV R0, A(3)片外 RAM 20H單元的內(nèi)容送片內(nèi)RAM 20H單元; MOV DPTR, #0020H MOVX A, DPTR MOV 20H, A(4)片外RAM 1000H單元的內(nèi)容送片內(nèi) RAM 20H 單元; MOV DPTR, #1000H MOVX A,DPTR MOV 20H, A(5)ROM 2000H單元的內(nèi)容送R0單元; MOV A, #00H MOV DPTR, #2000H MOVC A, A+DPTR MOV R0H, A(6)ROM 2000H 單元的內(nèi)容送片內(nèi)RAM 20H單元; MOV A, #00H MOVDPTR, #2000H MOVC A,A+DPTR MOV 20H, A(7)ROM 2000H單元的內(nèi)容送片外RAM 20H單元。 MOV A, #00H MOV DPTR, #2000H MOVC A,A+DPTR MOV DPTR, #0020H MOVX DPTR,A6. 設(shè)有兩個4位BCD碼,分別存放在片內(nèi)RAM的23H,22H單元和33H,32H單元中,求它們的和,并送入43H,42H單元中去。(以上均為低位字節(jié),高位在高字節(jié))。ORG 0000HLJMP STARTORG 0030HSTART:MOV A,22HADD A,32HDA AMOV 42H,AMOV A,23HADDC A,33HDA AMOV 43H,ASJMP $ END7. 編程將片內(nèi)RAM的40H60H單元中內(nèi)容送到片外RAM以3000H開始的單元中。ORG 0000HLJMP MAINORG 0030HMAIN:MOV R7,#20HMOV R1,#40HMOV DPTR,#3000HLOOP:MOV A,R1MOVX DPTR,AINC R1INC DPTRDJNZ R7,LOOPSJMP $END8. 編程計算片內(nèi)RAM區(qū)30H37H的8個單元中數(shù)的算術(shù)平均值,結(jié)果存在3AH單元中。ORG 0000HLJMP MAINORG 0030HMAIN:MOV R0,#30H ;數(shù)據(jù)首地址MOV R1,#00H;和高位MOV R2,#00H; 和低位MOV R3,#07H;循環(huán)次數(shù)LP2:MOV A,R0ADD A,R2MOV R2,AJNC LP1INC R1LP1:INC R0DJNZ R3,LP2MOV R3,#03HLP3:CLR CMOV A,R1RRC A ; 和高位除2MOV R1,AMOV A,R2;和低高位除2RRC AMOV R2,ADJNZ R3,LP3MOV 3AH,R2SJMP $END9. 設(shè)有100個有符號數(shù),連續(xù)存放在片外RAM以2200H為首地址的存儲區(qū)中,試片成統(tǒng)計其中正數(shù)|、負(fù)數(shù)、零的個數(shù)。ORG 0000HLJMP MAINORG 0030HMAIN:MOV R2,#100MOV R3,#00H;零的個數(shù)MOV R4,#00H;正數(shù)的個數(shù)MOV R5,#00H;負(fù)數(shù)的個數(shù)MOV DPTR,#2000HLOOP:MOVX A,DPTRCJNE A,#00H,NET1INC R3INC DPTRDJNZ R2,LOOPSJMP NET3NET1:JC NET2INC R4INC DPTRDJNZ R2,LOOPSJMP NET3NET2:INC R5INC DPTRDJNZ R2,LOOPNET3:SJMP $END11.試編程實現(xiàn)兩個無符號16位數(shù)的減法。被減數(shù)和減數(shù)分別存放在DATA1和DATA2為首址的內(nèi)部RAM中,低位在低地址單元,高位在后,差存于R3(低8位)和R4(高8位)中。 CLR C MOV R0,#DATA1 MOV A,R0 MOV R1,#DATA2 SUBB A,R1 MOV R3,A INC R0 INC R1 MOV A,R0 SUBB A,R1 MOV R4,A 26. 從內(nèi)部存儲器20H單元開始,有30H個數(shù)據(jù)。試編一個程序,把其中的正數(shù)、負(fù)數(shù)分別送51H和71H開始的存儲單元,并分別將正數(shù)、負(fù)數(shù)的個數(shù)送50H和70H單元。參考程序: (由于間接尋址寄存器不夠用 ,本處采用兩段程序分先后處理正負(fù)數(shù))MOV R0,#20H ;處理正數(shù)MOV R2,#30H MOV 50H,#00H MOV 70H,#00HMOV R1, #51H LOOP0: MOV A, R0 ;取數(shù) INC R0 JB ACC.7, LOOP1 MOV R1 ,A INC R1INC 50H LOOP1: DJNZ R2, LOOP0 LOP: MOV R0,#20H ;處理負(fù)數(shù) MOV R2,#30H MOV R1, #71H LOOP2: MOV A, R0 INC R0 JNB ACC.7 LOOP3 MOV R1 ,A ;為負(fù)數(shù) INC R1 INC 70H LOOP3: DJNZ R2, LOOP2 END 27. 設(shè)內(nèi)部RAM中30H和31H單元中有兩個帶符號數(shù),求出其中的大數(shù)存放在32H單元中。 MOV A,30HXRL A,31H JB ACC.7,LOOP2 ;是否異號 MOV A,30H ;同號 SUBB A,31H JC LOOP1 MOV 32H,30H ;30H大 SJMP LOOP4 LOOP1:MOV 32H,31H ;31H大SJMP LOOP4 LOOP2:MOV A,30H ;異號 JB ACC.7 ,LOOP3 MOV 32H,31H ;正數(shù)大 SJMP LOOP4 LOOP3:MOV 32H,30H LOOP4:RET 28. 根據(jù)如下要求,試編制數(shù)據(jù)塊傳送程序。將存放在8051單片機內(nèi)部RAM中首址為20H,長度為50H的數(shù)據(jù)塊,傳送到片外RAM以4200H為首地址的連續(xù)單元中。 MOV R0,#20H MOV DPTR ,#4200H MOV R2,#50H LOOP:MOV A,R0 MOVX DPTR,A INC R0 INC DPTR DJNZ R2,LOOP END29. 設(shè)有兩長度均為20H的無符號字符串SA和SB,分別存放在單片機片內(nèi)RAM以20H及40H為首址的連續(xù)單元中。首地址存放高位字節(jié)。要求當(dāng)SASB時,將內(nèi)部RAM的60H單元清0;當(dāng)SA SB時將該單元全置1(FFH)。試編制實現(xiàn)上述要求的程序。 MOV R0,#20H MOV R1,#40H MOV R2, #20H LOOP2: MOV 61H,R1 ;61H做緩沖單元 MOV A , R0 CJNE A,61H ,LOOP1 ;不相等轉(zhuǎn) INC R0 ;相等準(zhǔn)備下一字節(jié) INC R1 DJNZ R2 , LOOP2 ;所有字節(jié)都相等? MOV 60H,#00H ;都相等 SJMP LOOP4 LOOP1: JC LOOP3 MOV 60H,#00H ;大于 SJMP LOOP4 LOOP3: MOV 60H,#0FFH ;小于 LOOP4: RET 30. 編一程序。將8051片內(nèi)存儲區(qū)DATA1單元開始的20個單字節(jié)數(shù)據(jù)依次與DATA2單元為起始地址的20個單字節(jié)數(shù)據(jù)進(jìn)行交換。 MOV R0,#DATA1 MOV R1,#DATA2 MOV R2,#20H LOOP:MOV A,R1 XCH A,R0 MOV R1,A INC R0 INC R1 DJNZ R2, LOOP END 31. 試編寫一程序。將8051片內(nèi)數(shù)據(jù)存儲區(qū)DATA1單元開始的50個單字節(jié)逐一移至DATA2單元開始的存儲區(qū)中。 MOV R0,#DATA1 MOV R1,#DATA2 MOV R2,#50 CJNE R0,#DATA2,LOOP0 ;計算地址大小 SJMP LOOP5 ;地址相同 LOOP0:JC LOOP2 ;考慮數(shù)據(jù)覆蓋,因地址交叉 LOOP1:MOV A,R0 ;DATA1大于DATA2 MOV R1,A ;如40H72H送30H62H INC R0 INC R1 DJNZ R2, LOOP1 SJMP LOOP5 LOOP2:MOV R0,#DATA1+50 ;DATA1小于DATA2 MOV R1,#DATA2+50 ;如30H62H送40H72H LOOP3:MOV A,R0 MOV R1,A DEC R0 DEC R1 DJNZ R2, LOOP3 LOOP5:RET 習(xí)題 2 2.1 指出下列程序中每一條指令的劃線操作數(shù)的尋址方式及其完成的操作。MOV 3FH ,#40H ;3FH為直接尋址,指令把數(shù)40H送地址3FH中MOV A ,3FH ;A為特殊寄存器尋址,把地址3FH中的內(nèi)容送A中MOV R1, #3FH ;3FH為立即尋址,指令把數(shù)3FH送寄存器R1中MOV A, R1 ;R1間接尋址, R1的內(nèi)容3FH作地址中的內(nèi)容送A中MOV 3FH, R1 ;寄存器尋址, R1的內(nèi)容送地址3FH中2.2 內(nèi)部RAM的4FH單元,可用哪幾種方式尋址?分別舉例說明。答: 1、直接尋址:MOV R1, 4FH 2、間接尋址:MOV R1,#4FH和MOV A, R12.3 特殊功能寄存器可用哪幾種方式尋址?分別舉例說明。答:只有直接尋址: MOV A, 90H (MOV A, P1 );P1口該指令只有機器碼E590H。2.6 指出下列指令執(zhí)行后目的操作數(shù)的結(jié)果,并寫出每條指令的機器碼??刹还苌舷戮渎?lián)系。其中(RO)=30H。MOV 30H #52H ;(30H)=52H MOV A,#78H ;(A)=78HMOV A,#30H ;(A)=30H MOV RO,#30H ;(RO)=30HMOV A,RO ;(A)=52H,把30H的內(nèi)容送A中。2.7指出在下列各條指令中,45H代表什么尋址方式?(1)MOV A, #45H ;立即尋址 (3)MOV 45H,46H ;直接尋址(2)MOV 45H,#46H ;直接尋址 (4)MOV C,45H ;位尋址2.8 分析下列指令順序執(zhí)行的結(jié)果,并寫出每條指令的機器碼。(1)MOV A,#32H ;7432H (4)MOV RO ,#20H ;7820H(2)DPTR,#2020H ;902020H (5)MOVX A ,RO ;E2H(3)MOVX DPTR,A ;F0H (6)MOV 30H ,A ;F530H結(jié)果:片外存儲器RAM2020H內(nèi)容為32H,(30H)=(A)=32H2.9試編程實現(xiàn)內(nèi)部RAM25H單元與外部RAM5500H單元的數(shù)據(jù)交換。參考程序: MOV DPTR,#5500H MOVX A,DPTR XCH A,25H MOVX DPTR,A2.10試編程實現(xiàn)外部RAM2040H單元的內(nèi)容與3040H單元互換。參考程序: MOV DPTR,#2040H MOVX A,DPTR MOV 30H, A MOV DPTR,#3040HMOVX A,DPTR XCH A,30H MOVX DPTR,A MOV DPTR,#2040H MOV A,30HMOVX DPTR,A2.11分析以下程序的執(zhí)行過程,并繪出執(zhí)行過程示意圖。(1) MOV A,#32H (6)PUSH A(2) MOV SP,#55H (7)MOV A,#2FH(3) MOV DPTR,#4000H ;設(shè)定初值(8) MOV DPTR,A ;使用寄存器(4) PUSH DPL (9)POP A ;恢復(fù)現(xiàn)場(5) PUSH DPH ;保護(hù)現(xiàn)場 (10)POP DPH(6) MOV DPTR,#4200H ;使用 (11)POP DPL (12) MOV DPTR,A參考答案說明:本程序前三條指令中 A、DPTR被給定了值,在后面程序中又要用到A、DPTR寄存器序中采用堆棧保存和恢復(fù)A、DPTR的值。2.12 指出以下程序順序執(zhí)行后每一條指令的結(jié)果。填寫在劃線部分。(1)MOV A,#25H ; (A)25H (5)ADD A ,R2 ; (A)58H(2)MOV 40H,#1AH ; (40H)=1AH (6)ADDC A,40H; (A)72H(3)MOV R2,#33H ; (R2)= 33H (7)MOV RO,#40H ; (R0)=40H(4)CLR C ; (C)= 0 (8)ADDC A,RO ; (A)8CH2.13試編程實現(xiàn)兩個無符號16位數(shù)的減法。被減數(shù)和減數(shù)分別存放在DATA1和DATA2為首址的內(nèi)部AM中,低位在低地址單元,高位在后,差存于R3(低8位)和R4(高8位)中。參考程序: CLR C MOV R0,#DATA1 MOV A,R0 MOV R1,#DATA2 SUBB A,R1MOV R3,A INC R0 INC R1 MOV A,R0 SUBB A,R1 MOV R4,A2.14 在劃線部分寫出下列程序每一條指令執(zhí)行后其目的操作數(shù)的結(jié)果。(1)MOV A,#OFOH ; 0F0H (2) CPL A ; 0FH(3)ANL 30H,#00H ; 00H (4) ORL 30H, #BDH ; 0BDH(5)XRL 30H,A ; 0B2H2.15 若(A)=7AH,分別執(zhí)行下列指令后,A的值是多少?填在劃線部分。標(biāo)志位CY和OV的值各是多?不考慮上下指令之間的聯(lián)系。(1)ANL A,#0FFH ; 7AH (4)ORL A,#00H ; 7AH(2)ORL A,#0FFH ; 0FFH (5)XRL A,#0FFH ; 85H(3)ANL A,#00H ; 00H (6)XRL A,00H ; 7AH2.16若外部RAM的(2000H)=X,(2001H)=Y,編程實現(xiàn)Z=3X+2Y,結(jié)果存入內(nèi)部RAM 20H單元(設(shè)Z255)參考程序: MOV DPTR,#2000H MOVX A,DPTR MOV B,#03H MUL AB MOV B,A ;存3X MOV DPTR,#2001H MOVX A,DPTR MOV 20H,A ADD A,20H ;計算2Y ADD A,B ;3X+2Y MOV 20H,A2.17 請判斷下列各條指令的書寫格式是否有錯,如有錯說明原因:答 :打()為不存在指令.1、mul r0r1 () 6、MOVX R0,B ()2、mov a,r7 () 7、MOV A,30H ()3、mov a,#3000h () 8、MOVX A,30H ()4、movc a+dptr,a () 9、ADDC A,R7 ()5、ljmp #1000h () 10、 ANL #99H ,36H ()2.18閱讀下列程序段,寫出每條指令執(zhí)行后的結(jié)果,并說明此程序段完成什么功能?MOV R 1 ,#30H ;(R 1 )= 30H MOV A,#64H ;(A)= 64H ADD A,#47H ;(A)= 0ABH ,(CY)= 0 ,(AC)= 0 DA A ;(A)= 11 ,(CY)= 1 ,(AC)= 1 MOV R 1 ,A ;(R 1 )= 30H ,(30H)= 11H此程序段完成的功能: 程序采用十六進(jìn)制運算指令完成十進(jìn)制數(shù)運算 64+47=11,且進(jìn)位為1。結(jié)果在30H單元。注意到DA A的功能。1、填空(每空分,共分)1、十六進(jìn)制數(shù)2B4轉(zhuǎn)換為二進(jìn)制數(shù)是_,轉(zhuǎn)換為十進(jìn)制數(shù)是_。2、一臺計算機所用的二進(jìn)制代碼的位數(shù)稱為_,8位二進(jìn)制數(shù)稱為_。3、8051單片機片內(nèi)有_字節(jié)的ROM,_字節(jié)的RAM。4、串行通信根據(jù)傳送信息的形式分為_和_。5、MCS51單片機系統(tǒng)通常有上電復(fù)位和_兩種復(fù)位方式。復(fù)位對內(nèi)部RAM_影響。6、堆棧按照_原則工作,使用_指明棧頂位置。7、_速的外設(shè)和計算機傳送_批量數(shù)據(jù)時常采用DMA方式。8、MCS51單片機的P2口有兩種用途:_和_。9、中斷系統(tǒng)中的兩個特殊功能寄存器IE為_,IP為_。10、一個機器周期為_個時鐘周期,_個振蕩周期。二、判斷是非,正確的打,不正確的 打號 (每小題1分,共10分)1、字長越長,計算機處理數(shù)據(jù)的速度越快; ( )2、匯編語言是面向過程的語言。 ( )3、任何一個十進(jìn)制小數(shù)都可以用二進(jìn)制精確表示。 ( ) 4、計算機的內(nèi)存與外存都可以直接與CPU交換數(shù)據(jù)。( )5、8051片內(nèi)數(shù)據(jù)存儲器的A0H單元既可采用直接尋址方式,又可采用寄存器間接尋址方式.( )6、P0、P1、P2、P3這四個并行輸入/輸出接口可以并行輸入或輸出8位數(shù)據(jù),也可以按位使用。 ( )7、復(fù)位影響片內(nèi)RAM存放的內(nèi)容。 ( )8、單片機有4組工作寄存器,可以同時使用四組。 ( )9、定時器/計數(shù)器0在工作方式0時的最大計數(shù)范圍是256。( )10、定時器/計數(shù)器溢出中斷可以由硬件產(chǎn)生,也可以由軟件產(chǎn)生。( ) 三、計算(分)1、設(shè)8,用補碼列式計算(以八位二進(jìn)制數(shù)表示) 四、簡答題(每小題4分,共分)、微型計算機由哪幾部分構(gòu)成?并簡述各部分的功能。 計算機與外設(shè)之間傳輸數(shù)據(jù)的方式有哪幾種?有何特點? 3、8051、8031、8751這三者有何區(qū)別和聯(lián)系? 4、EA/VDD引腳有何功用?8031的EA引腳應(yīng)如何處理,為什么? 5、MCS51單片機的尋址方式有哪幾種? 五、指令分析(15分)、 分析執(zhí)行指令(5分) MOV A,#7FH ADD A,#47H后,A、C、AC、OV、P的內(nèi)容是什么? 2、用數(shù)據(jù)傳送指令來實現(xiàn)下列要求的數(shù)據(jù)傳送。(每小題2分,共6分)(1)內(nèi)部RAM 50H單元內(nèi)容傳送到R3中。(2)外部RAM 30H單元內(nèi)容送內(nèi)部RAM20H單元。(3)ROM 2000H單元內(nèi)容送外部RAM 30H單元。3、指令改錯。(每小題1分,共4分)(1) MOV #78H, A (2) DEC DPTR (3) MOVX A,R5 (4) XRL 30H 六、程序設(shè)計(15分) 將A中所存的一位十六進(jìn)制數(shù)轉(zhuǎn)換為ASCII碼。(7分) 編寫一程序段,其功能為:內(nèi)部RAM的32H(高)30H(低)和42H(高)40H(低)兩個三字節(jié)無符號數(shù)相加,結(jié)果存入32H(高)30H(低)單元,設(shè)三字節(jié)相加時無進(jìn)位。(8分)七、應(yīng)用題(15分)已知振蕩器振蕩頻率fosc為12MHz,要求定時器/計數(shù)器0產(chǎn)生10ms定時,編寫初始化程序。參考答案 一、 填空 0,11. 43. 字長,字節(jié)., ;.同步通信,異步通信.操作復(fù)位, 不產(chǎn)生.先進(jìn)后出, 堆棧指針,高, 大.準(zhǔn)雙向輸入輸出接口,高8位地址總線.中斷允許寄存器,優(yōu)先級選擇寄存器., 12二、判斷是非 ; ; ;。;。三、計算 0四、簡答 CPU算術(shù)邏輯運算,控制運算等、存儲器存儲數(shù)據(jù),中間結(jié)果等、I/O接口片內(nèi)片外數(shù)據(jù)交換,電平轉(zhuǎn)換,信息轉(zhuǎn)換等、總線連接片內(nèi)片外元器件。 無件傳送方式最簡單,只傳送數(shù)據(jù)信息查詢傳送方式-CPU不斷在查詢狀態(tài)下效率低,中斷方式適時性好,DMA方式最快的數(shù)據(jù)傳送方式8051有4KB掩膜ROM,8031內(nèi)部無ROM,8751內(nèi)部有4KB的EPROM。EA為片外程序存儲器選擇端,同時又是編程電壓輸入端;8031的EA引腳應(yīng)接地。立即尋址 寄存器尋址 直接尋址 、間接尋址 變址尋址 、相對尋址 五、指令分析 (A)=C6H,C=0,AC=1,OV=1,P=0 (5) MOV R3,50H (6) MOV R0,#30H, MOVX A,R0 MOV 20H,A (7) MOV DPTR,#2000H CLR A MOVC A,A+DPTR MOV R0,#30H MOVX R0,A 3.(1)MOV A,#78H (2) INC DPTR (3) MOVX A,R0 (4) XRL A六、程序設(shè)計 1.MOV R2,AADD A,#F6HMOV A,R2JNC AD30HADD A,#07HAD30H:ADD A,#30H2.MOV R0,#30HMOV R1,#40HMOV R2,#03HCLR CLOOP:MOV A,R0 ADDC A,R1 MOV R0,A INC R0 INC R1 DJNZ R2,LOOP END七、應(yīng)用題 cy=(1/(12106)s; 故定時值為10ms時,計數(shù)值為:N=10ms/s=000 ()方式1時,初值216-N=65536-000=55536=D8FCH 故設(shè)定的初值TH0=D8H;TL0=F0H() 方式1時方式控制寄存器的編程: 的各位內(nèi)容確定如下:由于定時器/計數(shù)器0設(shè)定為工作方式1,非門控方式,所以C/T(TMOD.2)=0,M!( TMOD.1)=0,M0( TMOD.0)=1,GATE!( TMOD.3)=0;定時器計數(shù)器1沒有使用,相應(yīng)的為隨意態(tài)“”可取為0,則( TMOD)=01 ()初始化程序Start: MOV TL0, #F0H; MOV TH0, #D8H; MOV TMOD, #01H; SETB TR0- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該PPT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 單片機 指令系統(tǒng) 復(fù)習(xí)
鏈接地址:http://m.appdesigncorp.com/p-6638434.html