单片机习题参考答案08-12
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机习题参考答案
第四章P97 6,7,9,10,12,16,17,18,19,23,27,28,29
6.在80C51片内RAM中,已知(30H)=38H,(38H)=40H,(40H)=48H,(48H)=90H,请分析下段程序中各指令的作用,并翻译成相应的机器码;说明源操作数的寻址方式及顺序执行每条指令后的结果。
机器码(H) 指令结果源操作数的寻址方式
E540 MOV A,40H ;A=(40H)=48H 直接寻址
F8 MOV R0,A ;R0=48H 寄存器寻址
7590F0 MOV P1,#0F0H ;P1=0F0H 立即寻址
A630 MOV @R0,30H ;(48H)= 38H 直接寻址
901246 MOV DPTR,#1246H;DPTR=1246H 立即寻址
853840 MOV 40H,38H ;(40H)=40H 直接寻址
A830 MOV R0,30H ;R0=38H 直接寻址
8890 MOV 90H,R0 ;(90H)=38H 寄存器寻址
754830 MOV 48H,#30H ;(48H)=30H 立即寻址
E6 MOV A,@R0 ;A=40H 寄存器间接寻址
8590A0 MOV P2,P1 ;P2=P1=38H 直接寻址
7.试说明下列指令的作用,并将其翻译成机器码,执行最后一条指令对PSW有何影响A的终值为多少
机器码(H) 指令结果
(1) 7872 MOV R0,#72H ;R0=72H
E8 MOV A,R0 ;A=72H,P=0
244B ADD A,#4BH ;A=BDH,CY=0,OV=1,AC=0,P=0
(2) 7402 MOV A,#02H ;A=02H,P=1
F5F0 MOV B,A ;B=02H
740A MOV A,#0AH ;A=0AH,P=0
25F0 ADD A,B ;A=0CH,CY=0,OV=0,AC=0,P=0
A4 MUL AB ;A=18H,B=0,CY=0,OV=0,AC=0,P=0
(3) 7420 MOV A,#20H ;A=20H,P=1
F5F0 MOV B,A ;B=20H
25F0 ADD A,B ;A=40H,CY=0,OV=0,AC=0,P=1
9410 SUBB A,#10H ;A=30H,CY=0,OV=0,AC=0,P=0
84 DIV AB ;A=01H,B=10H,CY=0,OV=0,AC=0,P=1
9.试编程将片外数据存储器60H中的内容传送到片内RAM 54H单元中。
MOV DPTR,#0060H
MOVX A,@DPTR
MOV 54H,A
(MOV P2,#0
MOV R0,#60H
MOVX A,@R0
MOV 54H,A)
10.试编程将寄存器R7内容传送到R1中去。
MOV A,R7
MOV R1,A
12.试说明下段程序中每条指令的作用,并分析当执行完指令后,R0中的内容是什么MOV R0,#0A7H ;R0=A7H
XCH A,R0 ;A=A7H,A的内容暂存R0
SWAP A ;A=7AH
XCH A,R0 ;R0=7AH,A的内容恢复
16.试编程将片外RAM中30H和31H单元的内容相乘,结果存放在32H和33H单元中,高位存放在33H单元中。
MOV P2,#0 MOV R0,#30H MOVX A,@R0 MOV B,A INC R0
MOVX A,@R0 MUL AB
INC R0
MOVX @R0,A
INC R0
MOV A,B MOVX @R0,A MOV DPTR,#30H MOVX A,@DPTR MOV B,A
INC DPTR
MOVX A,@DPTR MUL AB
INC DPTR
MOVX @DPTR,A
INC DPTR
MOV A,B MOVX @DPTR,A
17.试用三种方法将累加器A中无符号数乘2。(1)CLR C
RLC A
(2)MOV R0,A
ADD A,R0
或ADD A,ACC
(3)MOV B,#2
MUL AB
18.请分析依次执行下面指令的结果:
MOV 30H,#0A4H ;(30H)=A4H
MOV A,#0D6H ;A=D6H,P=1 MOV R0,#30H ;R0=30H
MOV R2,#47H ;R2=47H
ANL A,R2 ;A=46H,P=1
ORL A,@R0 ;A=E6H,P=1
SWAP A ;A=6EH,P=1
CPL A ;A=91H,P=1
XRL A,#0FFH ;A=6EH,P=1
ORL 30H,A ;(30H)=EEH
19.求执行下列指令后,累加器A及PSW中进位位CY、奇偶位P和溢出位OV的值。
(1)当A=5BH时;ADD A,#8CH
0101 1011
+)1000 1100
1110 0111
结果:A=E7H,CY=0,OV=0,P=0,AC=1
(2)当A=5BH时;ANL A,#7AH
0101 1011
∧)0111 1010
0101 1010
结果:A=5AH,P=0
(3)当A=5BH时;XRL A,#7FH
0101 1011
⊕)0111 1111
0010 0100
结果:A=24H,P=0
(4)当A=5BH,CY=1时;SUBB A,#0E8H
0101 1011 或将减法转换成补码加法0101 1011
1110 1000 -E8H的补码0001 1000
-) 1 -1的补码+)1111 1111
0111 0010 10111 0010
结果:A=72H,CY=1,OV=0,P=0,AC=0
23.执行下述程序后,SP=A=B=解释每一条指令的作用,并将其翻译成机器码。
地址(H) 机器码(H) ORG 200H
0200 758140 MOV SP,#40H ;SP=40H
0203 7430 MOV A,#30H ;A=30H
0205 120250 LCALL 250H ;调用250H开始的子程序SP=42H,
;(42H)=02H,(41H)=08H
0208 2410 ADD A,#10H ;此句没有执行
020A F5F0 MOV B,A ;B=30H
020C 80FE L1:SJMP L1 ;
ORG 0250H
0250 90020A MOV DPTR,#20AH;DPTR=020AH
0253 C082 PUSH DPL ;DPL进栈,SP=43H,(43H)=0AH
0255 C083 PUSH DPH ;DPH进栈,SP=44H,(44H)=02H
0257 22 RET ;返回,此处是利用RET将栈顶内容弹出
PC=020AH,SP=42H
44H
43H
栈区
42H
41H
40H
执行程序后,SP,B=30H