当前位置:首页 > 单片机第3章习题参考答案
第3章习题参考答案
3.1 3.2 3.3 3.4
(略) (略) (略)
指出下列指令源操作数的寻址方式和功能。 1) MOV A,# 40H ;立即寻址。 40H? A 2) MOV A, 40H 4) MOV A, R3 6) SJMP LOOP 3.5
;直接寻址。 (40H)? A
(R1)? A
R3? A (A+PC)? A
;寄存器寻址。
3) MOV A, @R1 ;寄存器间址。 5) MOVC A,@A+PC ;变址寻址。 内部RAM的00H单元的寻址方式: 1) 直接寻址,MOV A,00H
2) 因为00H是工作寄存器区,所以还可以寄存器寻址。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 MOV A,50H MOV 50H,# 20H MOV 50H,20H
源操作数
机器码 7450H E550H 755020H A250H 852050H 机器码 7666H 7E66H 756645H 9266H 8966H
;相对寻址。 程序转到标号为LOOP的语句处执行。
源操作数的地址 目的操作数的地址 位地址
目的操作数的地址 源操作数 源操作数 位地址
MOV C, 50H
2) 指 令 66H的含义
MOV @R0,# 66H MOV R6,#66H MOV 66H,# 45H MOV 66H,C MOV 66H,R1
3.8
目的操作数的地址
目的操作数的地址
写出下列指令的机器码,指出下列程序执行后的结果。 1) MOV A,# 60H 机器码: 7460H
MOV R0,# 40H MOV @R0,A XCH A,R0
MOV 41H,R0
7840H F6 H 8841H C8 H
机器码:902003H
7418H 752038H - 1 -
结果:A = 40H,R0 = 60H,(40H)= 60H,(41H)= 40H 2) MOV DPTR, # 2003H
MOV A, # 18H MOV 20H,# 38H
MOV R0, # 20H XCH A, @R0
3.9
7820H C8H
结果:A = 38H,R0 = 20H,(20H)= 18H 写出能完成下列数据传送的指令。 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 MOVX A, @R0 MOV 20H, A
4) 外部RAM 2000H单元中的内容送到内部RAM 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单元中的内容相交换的程序
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
; 外部RAM区16位地址的高8位清0
70H 71H 72H 73H
栈底 X Y Z SP 60H 61H 62H 63H
栈底 Z Y X SP - 2 -
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) POP 22H ;(22H)= Z
POP 21H ;(21H)= Y POP 20H ;(20H)= X
3.13 试问如下程序执行后累加器A和PSW中的内容是什
么?
1) MOV A,# 0FEH
ADD A,# 0FEH 2) MOV A,# 92H
ADD A,# 0A4H
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)= 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
3.16 参考程序:
ORG 1000H MOV R0, # M1 MOV A, @R0 MOV R1, # M2 MOV B, @R1
;取乘数
MUL AB ;被乘数低8位与乘数相乘 MOV R4, A ;保存低8位 MOV R3, B INC R0
3.17 参考程序:
- 3 -
;取被乘数低8位
MOV A, @R0;取被乘数高8位 MOV B, @ R1 MUL AB ADD A ,R3 MOV R3, A MOV A, B
ADDC A, # 00H ;加上进位 MOV R2, A SJMP $ END
;保存高8位
MOV A, B MOV R0, # M3 ADD A, @R0 MOV R0, A MOV A, # 00H ADDC A, R1 MOV R1, A SJMP $ END
;A = 36H,PSW = 84H
;A = FCH,PSW = C0H
70H 71H 72H 73H
栈底 X Y Z SP 数据出栈后
SP的位置
ORG 1000H MOV R0, # 20H MOV A, @R0 INC R0 MOV B, @R0 DIV AB 3.18 参考程序:
ORG 1000H CLR C
MOV A, # 5DH SUBB A, # B4H MOV R0, # 30H MOV @R0, A
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
3.21 参考程序:
CPL A
;保存商的低8位
MOV R0, # 20H
;取除数 ;A / B = A…B
;取被除数
MOV P2, # 00H
MOVX @R0, A ;保存商 INC R0
MOVX @R0, B SJMP $ END
MOV A, # 6FH SUBB A, # 13H INC R0
MOV @R0, A;保存商的高8位 SJMP $ END
;保存余数
MOV 20H, A
(用移位指令,两操作数为8位无符号数,操作结果<255) 1)ORG 1000H
MOV DPTR, # 2000H MOVX A, @DPTR MOV R0, A CLR C RLC A ADD A, R0 MOV R0, A 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 ADD A, R0 MOV 20H, A SJMP $ END
INC DPTR MOVX A, @DPTR CLR C RLC A XCH A, R0 CLR C SUBB A, R0 MOV 20H, A SJMP $ END
- 4 -
共分享92篇相关文档