资源描述
一. 填空题 1. 指出以下程序顺序执行后每一条指令的结果。填写在划线部分。 (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. 在划线部分写出下列程序每一条指令执行后其目的操作数的结果。 (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,分别执行下列指令后,A的值是多少?填在划线部分。标志位CY和OV的值各是多少考虑上下指令之间的联系。 (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单片机的指令系统有何特点?解:8051的指令系统由111条指令组成。如果按字节数分类,有49条单字节指令46条双字节指令和16条三字节指令,以单字节指令为主;如果按照指令执行时间分类,有64条单周期指令、45条双周期指令和条四周期指令,以单周期指令为主。8051的指令系统具有以下特点:(1)存储效率高、执行速度快,可以进行直接地址到直接地址的数据传送,能把一个并行I/O口中的内容传送到内部RAM单元中而不必经过累加器A或工作寄存器Rn。这样可以大大提高传送速度和缓解累加器A的瓶颈效应。(2)用变址寻址方式访问程序存储器中的表格,将程序存储器单元中的固定常数或表格字节内容传送到累加器A中。这为编成翻译算法提供了方便。(3)在算术运算指令中设有乘法和除法指令(4)指令系统中一些对I/O口进行操作的指令具有“读修改写”的功能。这一功能指:在执行读锁存器的指令时,CPU首先完成将锁存器的值通过缓冲器BUF2度入内部,进行修改、改变,然后重新写到锁存器中去。这种类型指令包含所有的逻辑操作和位操作指令。(5)8051单片机内部有一个布尔处理器,对为地址空间具有丰富的位操作指令。布尔操作类指令有17条,包括布尔传送指令、布尔状态控制指令、布尔逻辑操作指令、布尔条件转移指令。2. 8051单片机指令系统按功能可分为几类?具有几种寻址方式?它们的寻址范围如何?解:MCS-51单片机指令系统按功能可分为5类: (1)数据传送指令2)算术运算指令3)逻辑运算和移位指令4)控制转移指令5)位操作指令 MCS-51单片机的指令系统提供了七种寻址方式,其对应的寻址范围如下表:寻址方式使用的变量寻址范围立即寻址程序存储器直接寻址内部RAM低128个字节;特殊功能寄存器SFR寄存器寻址R0R7;A、B、DPTR、C寄存器间接寻址R0、R1、SP内部RAM、堆栈指针SPR0、R1、DPTR外部RAM变址寻址A+PC、A+DPTR程序存储器相对寻址PC+偏移量程序存储器位寻址内部RAM低128B位寻址区可位寻址的特殊功能寄存器位3. 访问特殊功能寄存器和外部数据存储器应采用哪种寻址方式?解: 访问特殊功能寄存器,应采用直接寻址、位寻址方式。访问外部数据存储器,应采用寄存器间接寻址方式。在0255B范围内,可用寄存器R0、R1间接寻址:MOVX A,R0 或 MOVX A,R1 MOVX R0,A 或 MOVX R1,A在064KB范围内,可用16位寄存器DPTR间接寻址MOVX A,DPTR MOVX DPTR,A4. “DA A”指令的作用是什么?怎样使用?解:这条指令是在进行BCD码加法运算时,跟在“ADD”和“ADDC”指令之后,用来对BCD码的加法运算结果自动进行修正的,使其仍为BCD码表达形式。在计算机中,遇到十进制调整指令时,中间结果的修正是由ALU硬件中的十进制修正电路自动进行的。用户不必考虑何时该加“6”,使用时只需在上述加法指令后面紧跟一条“DA A”指令即可。5. 片内RAM 20H2FH单元中的128个位地址与直接地址00H7FH形式完全相同,如何在指令中区分出位寻址操作和直接寻址操作?解: 虽然内部RAM位寻址区的位地址范围00H7FH与低128个单元的单元地址范围00H7FH形式完全相同,但是在应用中可以通过指令的类型区分单元地址和位地址。位寻址的操作只适用于下列位指令,而直接寻址操作对这些指令是无效的。MOV C,bit MOV bit,C CLR bit SETB bit CPL bit ANL C,bit ANLC,/bit JB bit,rel JNB bit,rel6. 8051单片机指令系统中有长跳转LJMP,长调用LCALL指令,为何还设置了绝对跳转AJMP,绝对调用ACALL指令?在实际使用是应怎样考虑?解: 在实际应用中,可从寻址范围和指令长度两个方面来选择长跳转指令LJMP和短跳转指令AJMP、长调用指令LCALL和短调用指令ACALL。长跳转LJMP在64KB范围内转移,而短跳转AJMP只能在2KB空间转移。长调用LCALL调用位于64KB程序空间的子程序,而短调用ACALL调用位于2KB程序空间范围的子程序。AJMP、ACALL指令代码长度为个字节;LJMP、LCALL指令代码长度为个字节。7. SJMP,AJMP和LJMP指令在功能上有何不同?解: 指令的转移范围不同。SJMP是256B范围内的相对转移指令,AJMP是2KB范围内的无条件短跳转指令,LJMP是64KB范围内的无条件长跳转指令。8. MOVC A,A+DPTR与MOVX A,DPTR指令有何不同?解: MOVC指令是针对程序存储器的数据传送指令,A+DPTR基址变址寻址时,DPTR为常数且是表格的首地址,A为从表格首址到被访问字节地址的偏移量。MOVX指令是针对外部RAM的数据传送指令,DPTR寄存器间接寻址时,寻址范围在064KB。9. 在“MOVC A,A+DPTR”和“MOVC A,A+PC”中,分别使用了DPTR和PC作基址,请问这两个基址代表什么地址?使用中有何不同?解: 使用A+DPTR基址变址寻址时,DPTR为常数且是表格的首地址,A为从表格首址到被访问字节地址的偏移量。使用A+PC基址变址寻址时,PC仍是下条指令首地址,而A则是从下条指令首地址到常数表格中的被访问字节的偏移量。10. 设片内RAM中的(40H)=50H,写出执行下列程序段后寄存器A和R0,以及片内RAM中50H和51H单元的内容为何值?MOV A,40HMOV R0,AMOV A,#00MOV R0,AMOV A,#30HMOV 51H,AMOV 52H,#70H解:结果为:(A)30H (R0)=50H (50H)00H (51H)30H11. 设堆栈指针(SP)=60H,片内RAM中的(30H)=24H,(31H)=10H。执行下列程序段后,61H,62H,30H,31H,DPTR及SP中的内容将有何变化?解:结果为: (61H)=24H (62H)=10H (30H)=00H (31H)=0FFH DPTR=2410HSP=60H12. 在8051的片内RAM中,已知(20H)=30H,(30H)=40H,(40H)=50H,(50H)=55H。分析下面各条指令,说明源操作数的寻址方式,分析按顺序执行各条指令后的结果。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解: 指令 源操作数的寻址方式 执行指令后的结果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指出下列程序中每一条指令的划线操作数的寻址方式及其完成的操作。 MOV 3FH ,#40H ;3FH为直接寻址,指令把数40H送地址3FH中 MOV A ,3FH ;A为特殊寄存器寻址,把地址3FH中的内容送A中 MOV R1, #3FH ;3FH为立即寻址,指令把数3FH送寄存器R1中 MOV A, R1 ;R1间接寻址, R1的内容3FH作地址中的内容送A中 MOV 3FH, R1 ;寄存器寻址, R1的内容送地址3FH中 14. 内部RAM的4FH单元,可用哪几种方式寻址?分别举例说明。 答: 1、直接寻址:MOV R1, 4FH 2、间接寻址:MOV R1,#4FH和MOV A, R1 15. 特殊功能寄存器可用哪几种方式寻址?分别举例说明。 答:只有直接寻址: MOV A, 90H (MOV A, P1 ); 该指令只有机器码E590H。 16. 编程:将立即数55H送入内部RAM的30H单元。 (1)用立即寻址 (2)用寄存器寻址 (3)用寄存器间接寻址 答: (1)MOV 30H ,#55H (2)MOV R1 ,#55H MOV 30H , R1(3)MOV R1,#30H MOV R1 ,#55H 17. 用指令实现下述数据传送: (1)内部RAM 30H单元的内容送内部RAM40H单元。 答: MOV 40H , 30H (2)外部RAM 30H单元的内容送R0寄存器 答: MOV R1,#30H MOVX A,R1 MOV R0 ,A (3)外部RAM 30H 单元的内容送内部RAM 30H单元 答: MOV R1,#30H MOVX A,R1 MOV 30H,A (4)外部RAM 2000H单元的内容送内部RAM20H单元 答: MOV DPTR,#2000H MOVX A,DPTR MOV 20H,A (5)外部ROM 2000H单元的内容送内部RAM20H单元 答: MOV DPTR,#2000H MOV A,#00H MOVC A,A+DPTR MOV 20H,A (6)外部ROM 2000H单元内容送外部RAM20H单元。答: MOV DPTR,#2000H MOV A,#00H MOVC A,A+DPTR MOV R1,#20H MOVX R1,A18. 指出下列指令执行后目的操作数的结果,并写出每条指令的机器码。可不管上下句联系。其中(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的内容送A中。 19.指出在下列各条指令中,45H代表什么寻址方式? (1)MOV A, #45H ;立即寻址 (2)MOV 45H,#46H ;立即寻址 (3)MOV 45H,46H ;直接寻址 (4)MOV C,45H ;位寻址 20. 分析下列指令顺序执行的结果,并写出每条指令的机器码。 (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 结果:片外存储器RAM2020H内容为32H,(30H)=(A)=45H 23. 指出以下程序顺序执行后每一条指令的结果。填写在划线部分。 (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. 在划线部分写出下列程序每一条指令执行后其目的操作数的结果。 (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,分别执行下列指令后,A的值是多少?填在划线部分。标志位CY和OV的值各是多少?不考虑上下指令之间的联系。 (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.阅读下列程序段,写出每条指令执行后的结果,并说明此程序段完成什么功能? 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 此程序段完成的功能: 程序采用十六进制运算指令完成十进制数运算 64+47=11,且进位为1。结果在30H单元。注意到DA A的功能。 28. 内部RAM的4FH单元,可用哪几种方式寻址?分别举例说明。 答: 1. 直接寻址:MOV R1, 4FH 2. 间接寻址:MOV R1,#4FH和MOV A, R1 29. 编程:将立即数55H送入内部RAM的30H单元。(1)用立即寻址 MOV 30H ,#55H(2)用寄存器寻址 MOV R1 ,#55H MOV 30H , R1(3)用寄存器间接寻址 MOV R1,#30H MOV R1 ,#55H 30. 用指令实现下述数据传送: (1)内部RAM 30H单元的内容送内部RAM40H单元。 答: MOV 40H , 30H (2)外部RAM 30H单元的内容送R0寄存器 答: MOV R1,#30H MOVX A,R1 MOV R0 ,A (3)外部RAM 30H 单元的内容送内部RAM30H单元 答: MOV R1,#30H MOVX A,R1 MOV 30H,A (4)外部RAM 2000H单元的内容送内部RAM20H单元 答: MOV DPTR,#2000H MOVX A,DPTR MOV 20H,A (5)外部ROM 2000H单元的内容送内部RAM20H单元 答: MOV DPTR,#2000H MOV A,#00H MOVC A,A+DPTR MOV 20H,(6)外部ROM 2000H单元内容送外部RAM20H单元。 答: MOV DPTR,#2000H MOV A,#00H MOVC A,A+DPTR MOV R1,#20H MOVX R1,A 三. 编程题 1.试编程实现内部RAM25H单元与外部RAM5500H单元的数据交换。 MOV DPTR,#5500H MOVX A,DPTR XCH A,25H MOVX DPTR,A 2.试编程实现外部RAM2040H单元的内容与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. 试编程实现两个无符号16位数的减法。被减数和减数分别存放在DATA1和DATA2为首址的内部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,编程实现Z=3X+2Y,结果存入内部RAM 20H单元(设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. 完成以下的数据传送过程。解:(1)R1的内容传送到R0 ; MOV A, R1 MOV R0, A(2)片外RAM 20H单元内容送R0 ; MOV DPTR, #0020H MOVX A,DPTR MOV R0, A(3)片外 RAM 20H单元的内容送片内RAM 20H单元; MOV DPTR, #0020H MOVX A, DPTR MOV 20H, A(4)片外RAM 1000H单元的内容送片内 RAM 20H 单元; MOV DPTR, #1000H MOVX A,DPTR MOV 20H, A(5)ROM 2000H单元的内容送R0单元; MOV A, #00H MOV DPTR, #2000H MOVC A, A+DPTR MOV R0H, A(6)ROM 2000H 单元的内容送片内RAM 20H单元; MOV A, #00H MOVDPTR, #2000H MOVC A,A+DPTR MOV 20H, A(7)ROM 2000H单元的内容送片外RAM 20H单元。 MOV A, #00H MOV DPTR, #2000H MOVC A,A+DPTR MOV DPTR, #0020H MOVX DPTR,A6. 设有两个4位BCD码,分别存放在片内RAM的23H,22H单元和33H,32H单元中,求它们的和,并送入43H,42H单元中去。(以上均为低位字节,高位在高字节)。ORG 0000HLJMP STARTORG 0030HSTART:MOV A,22HADD A,32HDA AMOV 42H,AMOV A,23HADDC A,33HDA AMOV 43H,ASJMP $ END7. 编程将片内RAM的40H60H单元中内容送到片外RAM以3000H开始的单元中。ORG 0000HLJMP MAINORG 0030HMAIN:MOV R7,#20HMOV R1,#40HMOV DPTR,#3000HLOOP:MOV A,R1MOVX DPTR,AINC R1INC DPTRDJNZ R7,LOOPSJMP $END8. 编程计算片内RAM区30H37H的8个单元中数的算术平均值,结果存在3AH单元中。ORG 0000HLJMP MAINORG 0030HMAIN:MOV R0,#30H ;数据首地址MOV R1,#00H;和高位MOV R2,#00H; 和低位MOV R3,#07H;循环次数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. 设有100个有符号数,连续存放在片外RAM以2200H为首地址的存储区中,试片成统计其中正数|、负数、零的个数。ORG 0000HLJMP MAINORG 0030HMAIN:MOV R2,#100MOV R3,#00H;零的个数MOV R4,#00H;正数的个数MOV R5,#00H;负数的个数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.试编程实现两个无符号16位数的减法。被减数和减数分别存放在DATA1和DATA2为首址的内部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. 从内部存储器20H单元开始,有30H个数据。试编一个程序,把其中的正数、负数分别送51H和71H开始的存储单元,并分别将正数、负数的个数送50H和70H单元。参考程序: (由于间接寻址寄存器不够用 ,本处采用两段程序分先后处理正负数)MOV R0,#20H ;处理正数MOV R2,#30H MOV 50H,#00H MOV 70H,#00HMOV R1, #51H LOOP0: MOV A, R0 ;取数 INC R0 JB ACC.7, LOOP1 MOV R1 ,A INC R1INC 50H LOOP1: DJNZ R2, LOOP0 LOP: MOV R0,#20H ;处理负数 MOV R2,#30H MOV R1, #71H LOOP2: MOV A, R0 INC R0 JNB ACC.7 LOOP3 MOV R1 ,A ;为负数 INC R1 INC 70H LOOP3: DJNZ R2, LOOP2 END 27. 设内部RAM中30H和31H单元中有两个带符号数,求出其中的大数存放在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 ;正数大 SJMP LOOP4 LOOP3:MOV 32H,30H LOOP4:RET 28. 根据如下要求,试编制数据块传送程序。将存放在8051单片机内部RAM中首址为20H,长度为50H的数据块,传送到片外RAM以4200H为首地址的连续单元中。 MOV R0,#20H MOV DPTR ,#4200H MOV R2,#50H LOOP:MOV A,R0 MOVX DPTR,A INC R0 INC DPTR DJNZ R2,LOOP END29. 设有两长度均为20H的无符号字符串SA和SB,分别存放在单片机片内RAM以20H及40H为首址的连续单元中。首地址存放高位字节。要求当SASB时,将内部RAM的60H单元清0;当SA SB时将该单元全置1(FFH)。试编制实现上述要求的程序。 MOV R0,#20H MOV R1,#40H MOV R2, #20H LOOP2: MOV 61H,R1 ;61H做缓冲单元 MOV A , R0 CJNE A,61H ,LOOP1 ;不相等转 INC R0 ;相等准备下一字节 INC R1 DJNZ R2 , LOOP2 ;所有字节都相等? MOV 60H,#00H ;都相等 SJMP LOOP4 LOOP1: JC LOOP3 MOV 60H,#00H ;大于 SJMP LOOP4 LOOP3: MOV 60H,#0FFH ;小于 LOOP4: RET 30. 编一程序。将8051片内存储区DATA1单元开始的20个单字节数据依次与DATA2单元为起始地址的20个单字节数据进行交换。 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片内数据存储区DATA1单元开始的50个单字节逐一移至DATA2单元开始的存储区中。 MOV R0,#DATA1 MOV R1,#DATA2 MOV R2,#50 CJNE R0,#DATA2,LOOP0 ;计算地址大小 SJMP LOOP5 ;地址相同 LOOP0:JC LOOP2 ;考虑数据覆盖,因地址交叉 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 习题 2 2.1 指出下列程序中每一条指令的划线操作数的寻址方式及其完成的操作。MOV 3FH ,#40H ;3FH为直接寻址,指令把数40H送地址3FH中MOV A ,3FH ;A为特殊寄存器寻址,把地址3FH中的内容送A中MOV R1, #3FH ;3FH为立即寻址,指令把数3FH送寄存器R1中MOV A, R1 ;R1间接寻址, R1的内容3FH作地址中的内容送A中MOV 3FH, R1 ;寄存器寻址, R1的内容送地址3FH中2.2 内部RAM的4FH单元,可用哪几种方式寻址?分别举例说明。答: 1、直接寻址:MOV R1, 4FH 2、间接寻址:MOV R1,#4FH和MOV A, R12.3 特殊功能寄存器可用哪几种方式寻址?分别举例说明。答:只有直接寻址: MOV A, 90H (MOV A, P1 );P1口该指令只有机器码E590H。2.6 指出下列指令执行后目的操作数的结果,并写出每条指令的机器码。可不管上下句联系。其中(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的内容送A中。2.7指出在下列各条指令中,45H代表什么寻址方式?(1)MOV A, #45H ;立即寻址 (3)MOV 45H,46H ;直接寻址(2)MOV 45H,#46H ;直接寻址 (4)MOV C,45H ;位寻址2.8 分析下列指令顺序执行的结果,并写出每条指令的机器码。(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结果:片外存储器RAM2020H内容为32H,(30H)=(A)=32H2.9试编程实现内部RAM25H单元与外部RAM5500H单元的数据交换。参考程序: MOV DPTR,#5500H MOVX A,DPTR XCH A,25H MOVX DPTR,A2.10试编程实现外部RAM2040H单元的内容与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分析以下程序的执行过程,并绘出执行过程示意图。(1) MOV A,#32H (6)PUSH A(2) MOV SP,#55H (7)MOV A,#2FH(3) MOV DPTR,#4000H ;设定初值(8) MOV DPTR,A ;使用寄存器(4) PUSH DPL (9)POP A ;恢复现场(5) PUSH DPH ;保护现场 (10)POP DPH(6) MOV DPTR,#4200H ;使用 (11)POP DPL (12) MOV DPTR,A参考答案说明:本程序前三条指令中 A、DPTR被给定了值,在后面程序中又要用到A、DPTR寄存器序中采用堆栈保存和恢复A、DPTR的值。2.12 指出以下程序顺序执行后每一条指令的结果。填写在划线部分。(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试编程实现两个无符号16位数的减法。被减数和减数分别存放在DATA1和DATA2为首址的内部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 在划线部分写出下列程序每一条指令执行后其目的操作数的结果。(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,分别执行下列指令后,A的值是多少?填在划线部分。标志位CY和OV的值各是多?不考虑上下指令之间的联系。(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,编程实现Z=3X+2Y,结果存入内部RAM 20H单元(设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阅读下列程序段,写出每条指令执行后的结果,并说明此程序段完成什么功能?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此程序段完成的功能: 程序采用十六进制运算指令完成十进制数运算 64+47=11,且进位为1。结果在30H单元。注意到DA A的功能。1、填空(每空分,共分)1、十六进制数2B4转换为二进制数是_,转换为十进制数是_。2、一台计算机所用的二进制代码的位数称为_,8位二进制数称为_。3、8051单片机片内有_字节的ROM,_字节的RAM。4、串行通信根据传送信息的形式分为_和_。5、MCS51单片机系统通常有上电复位和_两种复位方式。复位对内部RAM_影响。6、堆栈按照_原则工作,使用_指明栈顶位置。7、_速的外设和计算机传送_批量数据时常采用DMA方式。8、MCS51单片机的P2口有两种用途:_和_。9、中断系统中的两个特殊功能寄存器IE为_,IP为_。10、一个机器周期为_个时钟周期,_个振荡周期。二、判断是非,正确的打,不正确的 打号 (每小题1分,共10分)1、字长越长,计算机处理数据的速度越快; ( )2、汇编语言是面向过程的语言。 ( )3、任何一个十进制小数都可以用二进制精确表示。 ( ) 4、计算机的内存与外存都可以直接与CPU交换数据。( )5、8051片内数据存储器的A0H单元既可采用直接寻址方式,又可采用寄存器间接寻址方式.( )6、P0、P1、P2、P3这四个并行输入/输出接口可以并行输入或输出8位数据,也可以按位使用。 ( )7、复位影响片内RAM存放的内容。 ( )8、单片机有4组工作寄存器,可以同时使用四组。 ( )9、定时器/计数器0在工作方式0时的最大计数范围是256。( )10、定时器/计数器溢出中断可以由硬件产生,也可以由软件产生。( ) 三、计算(分)1、设8,用补码列式计算(以八位二进制数表示) 四、简答题(每小题4分,共分)、微型计算机由哪几部分构成?并简述各部分的功能。 计算机与外设之间传输数据的方式有哪几种?有何特点? 3、8051、8031、8751这三者有何区别和联系? 4、EA/VDD引脚有何功用?8031的EA引脚应如何处理,为什么? 5、MCS51单片机的寻址方式有哪几种? 五、指令分析(15分)、 分析执行指令(5分) MOV A,#7FH ADD A,#47H后,A、C、AC、OV、P的内容是什么? 2、用数据传送指令来实现下列要求的数据传送。(每小题2分,共6分)(1)内部RAM 50H单元内容传送到R3中。(2)外部RAM 30H单元内容送内部RAM20H单元。(3)ROM 2000H单元内容送外部RAM 30H单元。3、指令改错。(每小题1分,共4分)(1) MOV #78H, A (2) DEC DPTR (3) MOVX A,R5 (4) XRL 30H 六、程序设计(15分) 将A中所存的一位十六进制数转换为ASCII码。(7分) 编写一程序段,其功能为:内部RAM的32H(高)30H(低)和42H(高)40H(低)两个三字节无符号数相加,结果存入32H(高)30H(低)单元,设三字节相加时无进位。(8分)七、应用题(15分)已知振荡器振荡频率fosc为12MHz,要求定时器/计数器0产生10ms定时,编写初始化程序。参考答案 一、 填空 0,11. 43. 字长,字节., ;.同步通信,异步通信.操作复位, 不产生.先进后出, 堆栈指针,高, 大.准双向输入输出接口,高8位地址总线.中断允许寄存器,优先级选择寄存器., 12二、判断是非 ; ; ;。;。三、计算 0四、简答 CPU算术逻辑运算,控制运算等、存储器存储数据,中间结果等、I/O接口片内片外数据交换,电平转换,信息转换等、总线连接片内片外元器件。 无件传送方式最简单,只传送数据信息查询传送方式-CPU不断在查询状态下效率低,中断方式适时性好,DMA方式最快的数据传送方式8051有4KB掩膜ROM,8031内部无ROM,8751内部有4KB的EPROM。EA为片外程序存储器选择端,同时又是编程电压输入端;8031的EA引脚应接地。立即寻址 寄存器寻址 直接寻址 、间接寻址 变址寻址 、相对寻址 五、指令分析 (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六、程序设计 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七、应用题 cy=(1/(12106)s; 故定时值为10ms时,计数值为:N=10ms/s=000 ()方式1时,初值216-N=65536-000=55536=D8FCH 故设定的初值TH0=D8H;TL0=F0H() 方式1时方式控制寄存器的编程: 的各位内容确定如下:由于定时器/计数器0设定为工作方式1,非门控方式,所以C/T(TMOD.2)=0,M!( TMOD.1)=0,M0( TMOD.0)=1,GATE!( TMOD.3)=0;定时器计数器1没有使用,相应的为随意态“”可取为0,则( TMOD)=01 ()初始化程序Start: MOV TL0, #F0H; MOV TH0, #D8H; MOV TMOD, #01H; SETB TR0
展开阅读全文