单片机程序阅读.docx
《单片机程序阅读.docx》由会员分享,可在线阅读,更多相关《单片机程序阅读.docx(16页珍藏版)》请在冰点文库上搜索。
单片机程序阅读
四、读程序题(每小题4分,共20分)
1.执行下列程序段后,(P1)=_______。
MOVP1,#5DH
CPLP1.1
CPLP1.2
CLRP1.6
SETBP1.7
2.执行下列程序段后,(A)=_______,(CY)=____。
MOVA,#C5H
RLA
3.下列程序段执行后,(R0)=_______,(7EH)=____,(7FH)=_______。
MOVR0,#7EH
MOV7EH,#0FFH
MOV7FH,#40H
1NC@R0
1NCR0
1NC@R0
4.已知(SP)=60H,子程序SUBTRN的首地址为0345H,现执行位于0123H的ACALLSUBTRN双字节指令后,(PC)=___,(61H)=_______,(62H)=____。
5.阅读下列程序,说明其功能。
MOVR0,#data
MOVA,@R0
RLA
MOVR1,A
RLA
RLA
ADDA,R1
MOV@R0,A
RET
答案读程序题(每小题4分,共20分)
1.(P1)=9BH
2.(A)=8BH(或10001011B)
(CY)=不影响
3.(R0)=7FH
(7EH)=00H
(7FH)=41H
4.(PC)=0345H
(61H)=25H
(62H)=01H
5.(data)×10操作
四、阅读程序(20分)
1.下列各条指令其源操作数的寻址方式是什么?
各条指令单独执行后,A中的结果是什么?
(5分)设(60H)=35H,(A)=19H,(R0)=30H,(30H)=0FH。
(1)MOVA,#48H;寻址方式:
(A)=
(2)ADDA,60H;寻址方式:
(A)=
(3)ANLA,@R0;寻址方式:
(A)=
2.阅读下列程序段,写出每条指令执行后的结果,并说明此程序段完成什么功能?
(15分)
MOVR1,#30H;(R1)=
MOVA,#64H;(A)=
ADDA,#47H;(A)=,(CY)=,
(AC)=
DAA;(A)=,(CY)=,
(AC)=
MOV@R1,A;(R1)=,(30H)=
此程序段完成的功能:
答案四、阅读程序(20分)
1.(5分)(60H)=35H,(A)=19H,(R0)=30H,(30H)=0FH。
(1)立即寻址;48H
(2)直接寻址;4EH
(3)寄存器间接寻址;09H
2.阅读下列程序段,写出每条指令执行后的结果,并说明此程序段完成什么功能?
(15分)
MOVR1,#30H;(R1)=30H
MOVA,#64H;(A)=64H
ADDA,#47H;(A)=ABH(CY)=0
(AC)=0
DAA;(A)=11H,(CY)=1
(AC)=1
MOV@R1,A;(R1)=30H,(30H)=11H
此程序段完成的功能:
(5分)求两个BCD码数(64H和47H)的和,并将结果放在内部RAM的30H单元。
五、读程序(每小题5分,共10分)
1、设(A)=38H,R0=28H,(28H)=18H,执行下列程序后,(A)=0E7H
ORLA,#27H
ANLA,28H
XCHDA,@R0
CPLA
2、设(A)=38H,(20H)=49H,PSW=00H,(B)=02H,填写以下中间结果。
SETBC
ADDCA,20H(A)=82H(CY)=0(AC)=1
RLCA(A)=04H(CY)=1(P)=1
MULAB(A)=08H(B)=00H(OV)=0
四、分析程序并写出结果:
(共4题,每题5分)
1.已知(R0)=20H,(20H)=10H,(P0)=30H,(R2)=20H,执行如下程序段后(40H)=
MOV@R0,#11H
MOVA,R2
ADDA,20H
MOVPSW,#80H
SUBBA,P0
XRLA,#45H
MOV40H,A
2.已知(R0)=20H,(20H)=36H,(21H)=17H,(36H)=34H,执行过程如下:
MOVA,@R0
MOVR0,A
MOVA,@R0
ADDA,21H
ORLA,#21H
RLA
MOVR2,A
RET
则执行结束(R0)=(R2)=
3.执行下面一段程序;
MOVSP,#60H
MOVA,#10H
MOVB,#01H
PUSHA
PUSHB
POPA
POPB
A,B的内容是:
(A)=(B)=
4.设在31H单元存有#23H,执行下面程序:
MOVA,31H
ANLA,#0FH
MOV41H,A
MOVA,31H
ANLA,#0F0H
SWAPA
MOV42H,A
则(41H)=(42H)=
答案四。
分析程序并写出结果。
1.(20H)←11H
(A)←20H
(A)←(A)+(20)
(CY)=1
(A)-(P0)-(CY)→(A)即(A)←00H
(A)+45H→(A)即(A)←45H
(40H)←45H
2.(A)←((R0))(A)=36H
(R0)←(A)(R0)←36H
(A)←((R0))(A)←34H
(A)←(A)+(21H)34H+17H=4BH
(A)←(A)
21H4BH
21H=6BH
(A)←D6H
(R2)←D6H
(R0)=36H(R2)=D6H
3.(A)=01H(B)=10H
4.(41H)=03H(42H)=02H
四.阅读并分析程序(28分)
1.2506HM5:
MOVSP,#58H
2509HMOV10H,#0FH
250CHMOV11H,#0BH
250FHACALLXHD;PC+2
PC,
MOV20H,11H
2514HM5A:
SJMPM5A
XHD:
PUSH10H
PUSH11H
POP10H
POP11H
RET
问:
(1)执行POP10H后堆栈内容?
(2)执行M5A:
SJMPM5A后,(SP)=(20H)=
2.A程序存储空间表格如下:
地址
2000H
2001H
2002H
2003H
。
。
。
。
。
内容
3FH
06H
5BH
4FH
。
。
。
。
。
已知:
片内RAM的20H中为01H,执行下列程序后(30H)=
MOVA,20H
INCA
MOVDPTR,#2000H
MOVCA,@A+DPTR
CPLA
MOV30H,A
SJMP$
3.(R0)=4BH,(A)=84H,片内RAM(4BH)=7FH,(40)=20H
MOVA,@R0
MOV@R0,40H
MOV40H,A
MOVR0,#35H
问执行程序后,R0=A=4BH=40H=
4.若PSW=00,执行下列程序后,PSW的各位状态如何?
MOVA,#0FBH
MOVPSW,#10H
ADDA,#7FH
CY
AC
OV
P
OF
RS1
五.程序填空(10分)
1.数据块传送,将RAM从30H开始的连续32个单元的内容传递给片内RAM从60H开始的连续32个单元。
ORG1000H
MOVR7,_____
MOVR0,#30H
MOVR1,#60H
LOOP:
MOVA,@R0
MOV_____,A
INCR0
INCR1
DJNZR7,_____
SJMP$
END
2.将4个单字节数放片内30H~~33H,它们求和结果放在片内40H,41H单元。
ORG1000H
MOVR7,#04H
MOVR0,30H
CLRA
MOV41H,A
LOOP:
ADDA,@R0
JNCNEXT
INC_____
NEXT:
INC_____
DJNZR7,LOOP
MOV40H,A
SJMP$
END
3.RAM中40H单元内存有一个十六进制数,把这个数转换为BCD码的十进制数,BCD码的十位和个位放在累加器A中,百位放在R2中。
ORG2200H
MOVA,_____
MOVB,#64H
DIVAB
MOVR2,A
MOVA,_____
XCHA,B
DIVAB
SWAP_____
ORLA,B
SJMP$
END
4.编程序将片内40H-46H单元内容的高4位清零,保持低4位不变。
ORG1000H
MOVR7,#07H
MOVR0,_____
LOOP:
MOVA,@R0
ANLA,_____
MOV@R0,A
INCR0
DJNZR7,LOOP
SJMP$
END
答案四:
阅读并分析程序(28分)
(1)1)执行POP10H后堆栈内容?
(SP)=5AH
2)执行M5A:
SJMPM5A后,(SP)=58H(20H)=0FH
(2)(30H)=5BH
(3)R0=35HA=7FH4BH=20H40H=7FH
(4)
CY
AC
OV
P
OF
RS1
1
1
0
1
0
1
五、程序填空(10分)
1._#20H___R1____LOOP____
2.__41H_____R0___
3.__40H____#0AH______A___
4._#40H______#0FH___
二、程序分析题(共20分,每题10分)
1、程序如下
2506HM5:
MOVSP,#58H;
2509H MOV10H,0FH;
250CHMOV11H,#0BH;
250FHACALLXHD;
2511HMOV20H,11H
2514HM5A:
SJMPM5A
XHD:
PUSH10H
PUSH11H
POP10H
POP11H
RET
问:
(1)执行POP10H后堆栈内容?
(2)执行M5A:
SJMP M5A后,(SP)=?
(20H)=?
解
1)执行ACALL指令时:
PC+2➞PC:
(SP)+1➞SP PC0~PC7➞(SP)
(SP)+1➞SP PC8~PC15➞(SP)
2) 子程序返回时,点地址弹出,SP=58H
所以 (1)执行POP 10H后,堆栈内容如左图所示.
5C0B
5B0F
5A25
5911
58
(2)执行M5A:
SJMP M5A后,(SP)=58H,
(20H)=0FH
2、解读下列程序,然后填写有关寄存器内容
(1) MOVR1,#48H
MOV48H,#51H
CJNE@R1,#51H,00H
JNCNEXT1
MOVA,#0FFH
SJMPNEXT2
NEXT:
MOVA,#0AAH
NEXT2:
SJMPNEXT2
累加器A=()
(2)MOVA,#0FBH
MOVPSW,#10H
ADDA,#7FH
解
(1) MOVR1,#48H;48H送R1
MOV48H,#51H;51H送➞(48H)
CJNE@R1,#51H,00H;(R1)GN#51相比,相等,顺序执行
JNCNEXT1;没借位转,NEXT1
MOVA,#0FFH;有借位,FFH送A
SJMPNEXT2
NEXT1MOVA,#0AAH;0AAH送A
NEXT2SJMPNEXT2
累加器A=(0AAH)
(2)MOVA,#0FBH
MOVPSW,#10H00010000送PSW
ADDA,#7FH
由11111011
+01111111
____________
101111010
所以,有进位CY=1,C6♁C7=1♁1=0,OV=0;A中有奇数个1,P=1;
有辅助进位位AC=1
若PSW=00,当执行完上述程序段后,将PSW各位状态填入下表:
PSW
CY
AC
F0
RS1
RS0
OV
F1
P
1
1
0
1
0
0
0
1
二、程序分析题(共20分,每题10分)
1、程序存储器空间表格如下:
地址 2000H 2001H 2002H 2003H ...
内容 3FH 06H 5BH 4FH ...
已知:
片内RAM的20H中为01H,执行下列程序后(30H)=?
MOV A,20H
INC A
MOV DPTR,#2000H
MOVC A,@A+DPTR
CPL A
MOV30H,A
END:
SJMPEND
执行程序后,(30H)=
2、分析程序段:
CLR C
MOV A,#91H
SUBB A,61H ;
ADD A,61H ;
DA A ;
MOV 62H,A
(1)程序执行何种操作?
(2)若已知初值:
(60H)=24H,(61H)=72H,则运行后,(62H)=。
答案1、程序存储器空间表格如下:
地址 2000H 2001H 2002H 2003H ...
内容 3FH 06H 5BH 4FH ...
已知:
片内RAM的20H中为01H,执行下列程序后(30H)=?
MOV A,20H ;01H➞A
INC A ;01H+1=02H➞A
MOV DPTR,#2000H ;2000H➞DPTR
MOVC A,@A+DPTR ;(2000H+2)=5BH➞A
CPL A ;5BH求反等于A4H
MOV30H,A;A4H➞(30H)
END:
SJMPEND
答执行程序后,(30H)=A4
2、分析程序段:
CLR C
MOV A,#91H
SUBB A,61H ;求60H内的BCD数的补数,9AH-24H=76H
ADD A,61H ;76H+72H=E8H
DA A ;CY=1、A=48H
MOV 62H,A
解 根据9AH=99=1的特殊性,该程序功能为单字节BCD数减法运算,即完成的是(61H)-(60H)➞(62H)。
所以运行后,(62H)=48H,意即72-24=48