《2022年单片机第3章习题参考答案 .pdf》由会员分享,可在线阅读,更多相关《2022年单片机第3章习题参考答案 .pdf(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第 3 章习题参考答案3.1(略)3.2(略)3.3(略)3.4指出下列指令源操作数的寻址方式和功能。1) MOV A,# 40H ;立即寻址。40H A 2) MOV A, 40H ;直接寻址。(40H) A 3) MOV A , R1 ;寄存器间址。(R1) A 4) MOV A , R3 ;寄存器寻址。R3 A 5) MOVC A ,A+PC ;变址寻址。(A+PC) A 6) SJMP LOOP ;相对寻址。程序转到标号为LOOP 的语句处执行。3.5内部 RAM 的 00H 单元的寻址方式:1) 直接寻址, MOV A ,00H 2) 因为 00H 是工作寄存器区,所以还可以寄存器寻
2、址。MOV A, R0 特殊功能寄存器中的操作数的寻址方式:1) 直接寻址, MOV A , SP 2) 部分 SFR 可以位寻址, MOV C , ACC.7 3.6变址寻址和相对寻址中的地址偏移量异同:1) 变址寻址的偏移量是一个00H FFH 范围内的无符号数; 相对寻址偏移量是一个带符号的8 位二进制补码,范围为 -128 +127。2) 变址寻址的偏移量放在累加器A 中,相对寻址的偏移量直接在指令中给出。3) 都是将基地址与地址偏移量相加,形成操作数地址。3.7写出下列指令的机器码,指出指令中50H 和 66H 各代表什么?1)指 令50H 的含义机器码MOV A,# 50H 源操作
3、数7450H MOV A,50H 源操作数的地址E550H MOV 50H,# 20H 目的操作数的地址755020H MOV C, 50H 位地址A250H MOV 50H,20H 目的操作数的地址852050H 2)指 令66H 的含义机器码MOV R0,# 66H 源操作数7666H MOV R6,#66H 源操作数7E66H MOV 66H,# 45H 目的操作数的地址756645H MOV 66H,C 位地址9266H MOV 66H,R1 目的操作数的地址8966H 3.8写出下列指令的机器码,指出下列程序执行后的结果。1) MOV A ,# 60H 机器码:7460H MOV R
4、0 ,# 40H 7840H MOV R0 ,A F6 H MOV 41H ,R0 8841H XCH A,R0 C8 H 结果: A = 40H , R0 = 60H, (40H)= 60H, ( 41H)= 40H 2) MOV DPTR, # 2003H 机器码: 902003H MOV A, # 18H 7418H MOV 20H,# 38H 752038H 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 7 页 - - - - - - - - - - MOV R0, # 20H 78
5、20H XCH A, R0 C8H 结果: A = 38H , R0 = 20H, (20H)= 18H 3.9写出能完成下列数据传送的指令。1) R1 中的内容传送到R0 MOV R0, 01H 或:MOV A, R1 MOV R0, A 2) 内部 RAM 20H 单元中的内容送到30H MOV 30H, 20H 3) 外部 RAM 20H 单元中的内容送到内部RAM 20H 单元MOV R0, # 20H MOV P2, # 00H ; 外部 RAM 区 16 位地址的高8 位清 0 MOVX A, R0 MOV 20H, A 4) 外部 RAM 2000H 单元中的内容送到内部RAM
6、20H 单元MOV DPTR, # 2000H MOVX A, DPTR MOV 20H, A 5) 外部 ROM 2000H 单元中的内容送到内部RAM 20H 单元MOV DPTR, # 2000H MOV A, # 00H MOVC A, A+DPTR MOV 20H,A 6) 外部 ROM 2000H 单元中的内容送到外部RAM 3000H 单元MOV DPTR, # 2000H MOV A, # 00H MOVC A, A+DPTR MOV DPTR, # 3000H MOVX DPTR, A 3.10试编出把外部RAM 的 2050H 单元中的内容与2060H 单元中的内容相交换的
7、程序MOV DPTR, # 2050H MOVX A, DPTR MOV R0,A MOV DPTR, # 2060H MOVX A, DPTR XCH A, R0 MOVX DPTR,A MOV DPTR,# 2050H MOV A, R0 MOVX DPTR,A 3.11已知( 20H)= X, (21H)= Y, (22H)= Z。请用图示说明下列程序执行以后堆栈中的内容是什么?MOV SP,# 70H PUSH 20H PUSH 21H PUSH 22H 70H 栈底71H X 72H Y 73H Z SP 60H 栈底61H Z 62H Y 63H X SP 精品资料 - - - 欢
8、迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 7 页 - - - - - - - - - - 1) MOV SP,# 60H PUSH 22H PUSH 21H PUSH 20H 3.12已知 SP = 73H, (71H)= X , (72H)= Y, (73H)= Z。试问执行下列程序后20H,21H 和 22H 单元中的内容是什么?并用图示说明堆栈指针SP 的指向和堆栈中数据的变化。1) POP 20H ; (20H)= Z POP 21H ; (21H)= Y POP 22H ; (22H)= X 2) P
9、OP 22H ; (22H)= Z POP 21H ; (21H)= Y POP 20H ; (20H)= X 3.13试问如下程序执行后累加器A 和 PSW中的内容是什么?1) MOV A,# 0FEH ADD A,# 0FEH ;A = FCH ,PSW = C0H 2) MOV A,# 92H ADD A,# 0A4H ;A = 36H ,PSW = 84H 3.14指令结果如下:1) A = 20H ,Cy = 1, (30H)= A6H 2) A = D5H ,Cy = 1 3) A = 49H ,Cy = 0,R0 = 2FH 4) A = 4AH ,Cy = 0, (30H)=
10、A4H 3.15 已知内部RAM 的 M1 、M2 和 M3 单元中有无符号数X1、X2 和 X3。编程令其相加,并把和存入R0 和 R1(R0中为高 8 位)中。参考程序如下:ORG 1000H MOV R0, # M1 MOV R1, # M2 MOV A, R0 ADD A, R1 MOV B, A MOV A, # 00H ADDC A, # 00H MOV R1, A MOV A, B MOV R0, # M3 ADD A, R0 MOV R0, A MOV A, # 00H ADDC A, R1 MOV R1, A SJMP $ END 3.16参考程序:ORG 1000H MOV
11、 R0, # M1 MOV A, R0 ;取被乘数低8 位MOV R1, # M2 MOV B, R1 ;取乘数MUL AB ;被乘数低 8 位与乘数相乘MOV R4, A ;保存低 8 位MOV R3, B INC R0 MOV A, R0;取被乘数高8 位MOV B, R1 MUL AB ADD A ,R3 MOV R3, A MOV A, B ADDC A, # 00H ;加上进位MOV R2, A ;保存高 8 位SJMP $ END 3.17参考程序:70H 栈底71H X 72H Y 73H Z SP 数据出栈后SP的位置精品资料 - - - 欢迎下载 - - - - - - -
12、- - - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 7 页 - - - - - - - - - - ORG 1000H MOV R0, # 20H MOV A, R0 ;取被除数INC R0 MOV B, R0 ;取除数DIV AB ;A / B = A B MOV R0, # 20H MOV P2, # 00H MOVX R0, A ;保存商INC R0 MOVX R0, B ;保存余数SJMP $ END 3.18参考程序:ORG 1000H CLR C MOV A, # 5DH SUBB A, # B4H MOV R0, # 30H MOV R0,
13、A ;保存商的低8 位MOV A, # 6FH SUBB A, # 13H INC R0 MOV R0, A;保存商的高8 位SJMP $ END 3.19参考答案:1) A = E1H , (30H)= ABH 2) A = AAH 3) A = 10H 4) A = F0H 3.20参考程序:1) ANL 20H, 3FH 2) ORL 20H, C0H 3) XRL 20H, C0H 4) XRL 20H, FFH 或: MOV A, 20H CPL A MOV 20H, A 3.21参考程序:(用移位指令,两操作数为8 位无符号数,操作结果255)1)ORG 1000H MOV DPT
14、R, # 2000H MOVX A, DPTR MOV R0, A CLR C RLC A ADD A, R0 MOV R0, A INC DPTR MOVX A, DPTR CLR C RLC A ADD A, R0 MOV 20H, A SJMP $ END 2)ORG 1000H MOV DPTR, # 2000H MOVX A, DPTR MOV R0, A CLR C RLC A CLR C RLC A ADD A, R0 MOV R0, A INC DPTR MOVX A, DPTR CLR C RLC A XCH A, R0 CLR C SUBB A, R0 MOV 20H, A
15、 SJMP $ END 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 7 页 - - - - - - - - - - 3.22设 A 为无符号数,当A 满足以下条件时转到LABEL的参考程序段:1) A 20 CJNE A, # 14H,COMP ;若 A20,则形成 Cy 并转到 COMP SJMP LABEL ;若 A = 20,则转到 LABEL COMP: JNC LABEL ;若 Cy = 0,表示没有进位,则A20,转到 LABEL SJMP $ 2) A 20 CJNE A,
16、# 14H,COMP ;若 A20,则形成 Cy 并转到 COMP SJMP DONE ;若 A = 20,则停机COMP: JC LABEL ;若 Cy = 0,表示没有进位,则A 10 CJNE A, # 0AH,COMP ;若 A10,则形成 Cy 并转到 COMP SJMP DONE ;若 A = 10,则停机COMP: JC DONE ;若 Cy = 1,表示 A 10,转到 LABEL DONE: SJMP $ 3.23参考程序:ORG 1000H MOV DPTR, # DATA1 ;源操作区的起始地址MOV R0, #30H ;目的操作区的起始地址MOV R2, #14H ;数
17、据块长度NEXT: MOVX A, DPTR MOV R0, A ;从源操作取操作数INC DPTR INC R0 DJNZ R2, NEXT ;判断数据块是否传送结束SJMP $ END 3.24执行完调用指令后,堆栈指针SP = 72H,堆栈中的内容为2345H+02H = 2347H ,如图所示:调用的子程序在:3456H 3.25执行 RET 指令后, SP = 70H,PC = 2347H 71H、72H 中的内容不变,仍为47H 和 23H,但不属于堆栈区。3.26若 SUPER = 4060H,则程序 2、3 都是正确的。程序3 更好一点。程序 1 是绝对调用指令,只能在2KB
18、区域内寻址。若 SUPER = 2060H,程序 1 最好,因为绝对调用指令是在页内寻址,比长调用指令更有效。3.27参考程序:ORG 1000H MOV R0, #20H ;目的操作区的起始地址MOV R2, #14H ;数据块长度70H 栈底71H 47H 72H 23H SP 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 7 页 - - - - - - - - - - MOV DPTR, # 2000H ;源操作区的起始地址LOOP: MOVX A, DPTR INC DPTR JB
19、ACC.7 , NEXT ;若为负数,则去判断下一个MOV R0, A ;若为正数,则送到片内RAM 区INC R0 NEXT: DJNZ R2, LOOP ;判断数据块是否传送结束SJMP $ END 3.28参考程序:ORG 1000H MOV A, 20H CLR C SUBB A, 21H JNB ACC.7, DONE ;差为正数则存结果CPL A ;若差为负数,则求绝对值INC A DONE: MOV 30H, A ;存结果SJMP $ END 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 7 页 - - - - - - - - - - 文档编码:KDHSIBDSUFVBSUDHSIDHSIBF-SDSD587FCDCVDCJUH 欢迎下载 精美文档欢迎下载 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 7 页 - - - - - - - - - -
限制150内