- 46
- 0
- 约1.55万字
- 约 75页
- 2017-06-11 发布于河南
- 举报
单片机课后习解答
第三章; (5) DA A00000110
(A)=80H,Cy=0,其它无影响
(6) RLC A;(A)=F5H,Cy=0,
AC=0,OV=0,P=0
(7)RR A;(A)=3DH,Cy=1,
AC=0,OV=0,P=1
(8)PUSH 30H;SP=66H,(66H)=A5H
(9)POP B;SP=64H,(B)=(65H)
(10) XCH A,@R0;(A)=A5H,(30H)=7AH, Cy=1,OV=0,AC=0,P=0
;3-3 已知片内RAM中(30H)=64H,(50H)=04H,片外RAM中(1000H)=0FFH,(2004H)=00H,并且TAB=2000H,试分析顺序执行每条指令的结果。
(1)??? MOV R0,#30H;(R0)=30H
(2)??? MOV A,@R0;(A)=64H
(3)??? MOV DPTR,#1000H;(DPTR)=1000H
(4)??? MOVX @DPTR,A;(1000H)=64H
(5)??? MOV A,50H;(A)=04H
(6)??? MOV DPTR,#TAB;(DPTR)=2000H
(7)??? MOVC A,@A+DPTR;(A)=00H
(8)??? MOV P1,A;(P1)=00H
;3-4 试分析在执行完下面的程序段后,A,R0,R1,R7,SP以及片内RAM的一些单元中内容各是什么?
MOV SP,#65H
MOV R7,#5
MOV R0,#30H
MOV R1,#40H
LOOP:MOV A,@R1
PUSH ACC
MOV A,@R0
MOV @R1,A
INC R0
INC R1
DJNZ R7,LOOP;结果:(A)=(34H), (R0)=34H,(R1)=44H,(R7)=0, SP=70H ,(70H)=(44H),(30H)=(40H),…(34H)=(44H)。
3-5 已知SP=62H,(62H)=50H,(61H)=30H,问执行指令RET后,PC=?,SP=?并解释。
答:执行指令RET,从堆栈中弹出地址值给PC,栈指针减2,(62H),(61H)中的内容分别弹出PC=5030H,SP=60H
3-7 试编程求出片外RAM从2000H开始的连续20个单元的平均值,并将结果存入内部RAM20H单元。
MOV DPTR,#2000H
ACALL AVG
;子程序名:AVG
子程序功能:求20个无符号数平均值子程序
子程序入口:(DPTR)=数据区首地址指针
子程序出口:(R3)(R4)=均值
AVG: MOV R2,#20
MOV R3,#00H;部分和高位字节单元清零
MOV R4,#00H;部分和低位字节单元清零
ACALL D-ADD;调用累加和子程序
ACALL D-DIV;调用除以20的子程序
求多字节累加和子程序
子程序名:D-ADD;子程序功能:多字节累加和子程序
子程序入口:(DPTR)=数据区首地址指针
子程序出口:(R3)(R4)=累加和,R3中内容为和高字节,R4中内容为和低字节
D-ADD:CLR C
LOOP:MOVX A,@DPTR
ADD A,R4
MOV R4,A
CLR A
ADDC A,R3
MOV R3,A
INC DPTR
DJNZ R2,LOOP
RET;双字节除以20的子程序
子程序名:D-DIV
子程序功能:除以20的子程序
子程序入口:(R3)(R4)=被除数
子程序出口:(R3)(R4)=商
D-DIV: MOV R7,#08H;置计数初值
DV1: CLR C
MOV A,R4;将(R3)(R4)左移1位
RLC A
MOV R4,A
MOV A,R3
RLC A
MOV 00H,C;将移出的标志位送00H ; CLR C
SUBB A,R2;余数高位减除数
JB 00H,GOU;标志位为1够减 JNC GOU;无借位,也说明够减
ADD A,R2,不够减,恢复余数
AJMP DV2
GOU:INC R4;够减,商上1
DV2: MOV R3,A
DJNZ R7,DV1;减完?没完继续
MOV 20H,R3;转存20H
MOV 21H,R4;转存21H
RET ; MOV 21H,R4;转存21H
RET
商数
除数 被除数
原创力文档

文档评论(0)