第3章习题答案一、选择题1.在中断服务程序中,至少应该有一条( D )。
(A)传送指令(B)转移指令(C)加法指令(D)中断返回指令2.要用传送指令访问MCS-51片外RAM,它的指令操作码助记符应是( C )。
(A)MOV (B)MOVC (C)MOVX (D)以上都行3.JNZ rel指令的寻址方式是( C )。
(A)立即寻址(B)寄存器寻址(C)相对寻址(D)位寻址4.执行LCALL 1020H指令时,MCS-51所完成的操作是( D )。
(A)保护PC (B)PC←1020H(C)保护现场(D)PC+3入栈,PC←1020H5.下面哪条指令产生WR信号( D )。
(A)MOVX A,@DPTR (B)MOVC A,@A+PC(C)MOVC A,@A+DPTR (D)MOVX @DPTR,A6.在执行PUSH ACC指令时,MCS-51完成的操作是( A )。
(A)(SP)←(SP)+1,((SP))←(ACC)(B)(SP)←(ACC),((SP))←(SP)-1(C)(SP)←(SP)-1,((SP))←(ACC)(D)((SP))←(ACC),(SP)←(SP)+17.MCS-51执行完MOV A,#08H后,PSW的哪一位被置位( D )。
(A)C (B)F0 (C)OV (D)P8.指令AJMP的跳转范围是( C )。
(A)256B (B)1KB (C)2KB (D)64KB9.在寄存器间接寻址方式中,指定寄存器中存放的是( B )。
(A)操作数(B)操作数地址(C)转移地址(D)地址偏移量10.执行返回指令时,返回的断点是( C )。
(A)调用指令的首地址(B)调用指令的末地址(C)调用指令下一条指令的首地址(D)返回指令的末地址二、填空题:1.8051指令基本格式由标号、操作码助记符、操作数和注释组成。
2.MOV A,20H源寻址方式为直接寻址。
3.执行ANL A,#0FH指令后,累加器A的高4位=0000B 。
4.JZ rel的操作码首地址为1000H,rel=20H,它的转移目的地址为1022H 。
5.若R7的初值为00H的情况下,DJNZ R7,rel指令将循环执行 256 次。
6.SJMP rel的指令操作码首地址为0050H,rel=65H,那么它的转移目的地址为00B7H 。
7.指令LCALL 37B0H,首地址在2000H,所完成的操作是2003H 入栈,37B0H→PC。
8.RET是子程序指令,RETI是中断返回指令。
9.ORL A,#0F0H是将A的高4位置1,而低4位不变。
10.堆栈是在RAM中设定的存储区,栈底是固定的,栈顶是浮动的,存取数据的规则是先入后出,后入先出。
11.假定(A)=85H,(R0)=40H,(40H)=0AFH。
执行指令:ADD A,@R0后,累加器A的内容为 38H ,CY的内容为 1 ,AC的内容是 1 ,OV的内容是 1 。
12.MCS-51的2条查表指令是MOVCA,@A+DPTR 和MOVC A,@A+PC 。
13.在MCS-51中PC和DPTR都用于提供地址,但PC是为访问程序存储器提供地址,而DPTR是为访问数据存储器提供地址。
14.假定(A)=)0A5H,执行指令:SWAP A后,累加器A的内容为 5AH 。
15.执行下列指令序列后,所实现的逻辑运算式为C=P1.0*P1.1*/P1.2 。
MOV C,P1.0ANL C,P1.1ANL C,/P1.2MOV P3.0,C三.简答题1. 判断下列指令的正误:()(1)MOV @R1,#80H (√)(2)MOV R7,@R1 (╳)(3)MOV 20H,@R0 (√)(4)MOV R1,#0100H (╳)(5)CLR R4 (╳)(6)SETB R7.0 (╳)(7)MOV 20H,21H (√)(8)ORL A,R5 (√)(9)ANL R1,#0FH (√)(10)XRL P1,#31H (√)(11)MOVX A,2000H (╳)(12)MOV 20H,@DPTR (╳)(13)MOV A,DPTR (╳)(14)MOV R1,R7 (╳)(15)PUSH DPTR (√)(16)POP 30H (√)(17)MOVC A,@R1 (╳)(18)MOVC A,@DPTR (╳)(19)MOV @DPTR,#50H (╳)(20)RLC B (╳)(21)ADDC A,C (╳)(22)MOVC @R1,A (╳)(23)DEC DPTR (╳)(24)SUBB B,A (╳)(25)MUL A,B (╳)(26)INC B (√)(27)ADDC ACC,#30H (╳)(28)RLC 30H (╳)(29)MOV R1,C (╳)(30)CLR 25H (√)(31)LJMP DEC (╳)(32)LACLL ABC1 (╳)(33)JZ #30H (╳)(34)JBC 0FFH,LL1 (╳)(35)JB P,LOOP (√)(36)DJNZ @R1,NEXT (╳)(37)DJNE R1,LAST (╳)(38)DJNZ DPTR,LOOP (╳)(39)CJNZ A,#30H,NEXT (√)(40)CJNE R7,30H,ABC (╳)2.说明下列指令中源操作数和目的操作数的寻址方式。
(1)ADD A,30H源操作数:寄存器寻址目的操作数:直接寻址(2)MOV 30H,20H源操作数:直接寻址目的操作数:直接寻址(3)MOV A,@R0源操作数:寄存器寻址目的操作数:寄存器间接寻址(4)MOVX @R1,A源操作数:寄存器间接寻址目的操作数:寄存器寻址(5)SJMP $相对寻址(6)MOV R0,#20H源操作数:寄存器寻址目的操作数:立即寻址(7)ORL C,00H源操作数:位寻址目的操作数:位寻址(8)MOV DPTR,#2000H源操作数:寄存器寻址目的操作数:立即寻址(9)MOVC A,@A+PC源操作数:寄存器寻址目的操作数:变址寻址(10) ANL 20H,#30H源操作数:直接寻址目的操作数:立即寻址(11) ANL C,/30H源操作数:位寻址目的操作数:位寻址(12) CPL C位寻址(13) CPL A寄存器寻址(14) CPL 20H位寻址(15)ADD A,@R1源操作数:位寻址目的操作数:直接寻址(15) MOVC A,@A+DPTR源操作数:寄存器寻址目的操作数:变址寻址(16) DJNZ R0, rel源操作数:寄存器寻址目的操作数:相对寻址(17) SETB 00H位寻址(18) CJNE A,#00H,rel寄存器寻址、立即寻址、相对寻址(20)INC DPTR寄存器寻址3.设A=5AH,R1=30H,(30H)=0E0H,Cy=1。
分析下列各指令执行后A的内容以及对标志位的影响(每条指令都以题中规定的原始数据参加操作)。
(1)XCH A,R1 ;A=30H,(2)XCH A,30H;A=0E0H(3)XCH A,@R1;A=0E0H(4)XCHD A,@R1;A=50H(5)SWAP A ;A=0A5H(6)ADD A,R1;A=5DH,Cy=0,Ac=0,OV=0(7)ADD A,30H;A=3AH, Cy=1,Ac=0,OV=0(8)ADD A,#30H;A=8AH, Cy=0,Ac=0,OV=0(9)ADDC A,30HA=3BH, Cy=1,Ac=0,OV=0(10)INC AA=5BH(11)SUBB A,30HA=79H, Cy=1,Ac=0,OV=0(12)SUBB A,#30HA=29H, Cy=0,Ac=0,OV=0(13)DEC AA=59H(14)RL AA=0B4H(15)RLC AA=0B5H(16)CPL AA=0A5H(17)CLR AA=00H(18)ANL A,30HA=50H(19)ORL A,@R1A=0FAH(20ORL A,#30HA=6AH4.分步写出下列程序每条指令的运行结果。
(1) MOV SP,# 40H;SP=40HMOV A,#20H;A=20HMOV B,#30H;B=30HPUSH A;SP=41H,(41H)=20HPUSH B;SP=42H,(42H)=30HPOP A;A=30H;SP=41HPOP B;B=20H;SP=40H(2) MOV A,#83H;A=83HMOV R0,#47H;R0=47HMOV 47H,#34H;(47H)=34HANL A,#47H;A=03HORL 47H,A;47H=37HXRL A,@R0;A=32H(3) MOV R0,#00H;R0=00HMOV A,#20H;A=20HMOV B,#0FFH;B=0FFHMOV 20H,#0F0H;(20H)=0F0HXCH A,R0;A=00H,R0=20HXCH A,B;A=0FFH,B=00HXCHD A,@R0,A=0F0H(4) MOV A,#45H;A=45HMOV R5,#78H;R5=78HADD A,R5;A=0ADHDA A;A=23H四、应用题1.请用数据传送指令来实现下列要求的数据传送。
(1)R0的内容输出到R1MOV A,R0MOV R1,A(2)内部RAM20H单元的内容传送到A中。
MOV A,20H(3)外部RAM30H单元的内容送到R0。
MOV R1,#30HMOVX A,@R1MOV R0,A(4)外部RAM30H单元的内容送内部RAM20H单元。
MOV R1,#30HMOVX A,@R1MOV 20H,A(5)外部RAM1000H单元的内容送内部RAM20H单元。
MOV DPTR,#1000HMOVX A,@DPTRMOV 20H,A(6)程序存储器ROM2000H单元的内容送R1。
MOV A,#00HMOV DPTR,#2000HMOVC A,@A+DPTRMOV R1,A(7)ROM2000H单元的内容送到内部RAM20H单元。
MOV A,#00HMOV DPTR,#2000MOVC A,@A+DPTRMOV 20H,A(8)ROM2000H单元的内容送外部RAM30H单元。
MOV A,#00HMOV DPTR,#2000MOVC A,@A+DPTRMOV R0,#30HMOVX @R0,A(9)ROM2000H单元的内容送外部RAM1000H单元。
MOV A,#00HMOV DPTR,#2000MOVC A,@A+DPTRMOV DPTR,#1000HMOVX @DPTR,A(10)立即数40H送到内部RAM40H单元。
MOV 40H,#40H2.试分别用三种方法实现数据交换:R0与50H的内容互换。