第五部分程序阅读题.docx
- 文档编号:5130832
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:25
- 大小:31.78KB
第五部分程序阅读题.docx
《第五部分程序阅读题.docx》由会员分享,可在线阅读,更多相关《第五部分程序阅读题.docx(25页珍藏版)》请在冰豆网上搜索。
第五部分程序阅读题
第五部分程序阅读题
1.设(A)=38H,(20H)=49H,PSW=00H,(B)=02H,填写以下结果。
SETBC
ADDCA,20H
RLCA(A)=______;(CY)=______;(P)=______;
MULAB(B)=______;
2.阅读程序并回答下列问题:
XDATA50H
YDATA51H
ORG00H
JMPSTART
ORG100H
START:
MOVSP,#60H
MOVX,#10
MOVY,#10
LCALLSUB
SUB:
NOP
INCX
DECY
MOVA,Y
JZSUBRET
LCALLSUB
SUBRET:
NOP
RET
计算X和Y的值是多少?
(X)=;(Y)=;
3.执行下列程序后,R2,R3的内容是什么?
请在要求注释的地方给程序加上注释
MOVR3,#45H
MOVDPTR,#TABL;注释:
MOVA,R3
ANLA,#0FH;注释:
MOVCA,@A+DPTR;注释:
MOVR2,A
MOVA,R3
ANLA,#0F0H
SWAPA
MOVCA,@A+DPTR
MOVR3,A
………………………..
TABL:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,98H
(R2)=;(R3)=;
4.51单片机振荡频率为12MHz,阅读程序后说明
ORG0000H
LJMPMAIN
ORG001BH
LJMPINTT1
ORG0040H
INTT1:
MOVTH1,#3CH
MOVTL1,#0B0H
DJNZR7,L2
MOVR7,#20
CPLP1.2
L2:
RETI
ORG0100H
MOVSP,#5FH
MOVR7,#20
MOVTMOD,①
MOVTH1,#3CH
MOVTL1,#0B0H
SETBEA
SETB②
SETBTR1
SJMP$
1)根据程序内容填空:
①;②;
2)定时器T1的定时时间是多少?
3)寄存器R7在程序中的作用是什么?
4)该程序完成什么功能?
5.执行下面一段程序;填写运行结果
MOVSP,#60H
MOVA,#10H
MOVB,#01H
PUSHA
PUSHB
POPA
POPB
A,B的内容是:
(A)=(B)=;
6.设自变量为X,存放在ARE单元,应变量Y存放在BUF单元。
给程序标注注释,说明该段子程序的功能并写出该程序的函数关系式。
(7分)
START:
MOVDPTR,#ARE
MOVXA,@DPTR
JZSUL
JBACC.7,NEG;注释:
MOVA,#02H
SUL:
MOVDPTR,#BUF
MOVX@DPTR,A;注释:
RET
NEG:
MOVA,#0FEH
SJMPSUL
7.执行下列程序段后,(P1)=_______。
MOVP1,#5DH
CPLP1.1
CPLP1.2
CLRP1.6
SETBP1.7
8.执行下列程序段后,(A)=_______,(CY)=____。
MOVA,#C5H
RLA
9.下列程序段执行后,(R0)=_______,(7EH)=____,(7FH)=_______。
MOVR0,#7EH
MOV7EH,#0FFH
MOV7FH,#40H
1NC@R0
1NCR0
1NC@R0
10.已知(SP)=60H,子程序SUBTRN的首地址为0345H,现执行位于0123H的ACALLSUBTRN双字节指令后,(PC)=___,(61H)=_______,(62H)=____。
11.阅读下列程序,说明其功能。
MOVR0,#data
MOVA,@R0
RLA
MOVR1,A
RLA
RLA
ADDA,R1
MOV@R0,A
RET
12.下列各条指令其源操作数的寻址方式是什么?
各条指令单独执行后,A中的结果是什么?
设(60H)=35H,(A)=19H,(R0)=30H,(30H)=0FH。
(1)MOVA,#48H;寻址方式:
(A)=
(2)ADDA,60H;寻址方式:
(A)=
(3)ANLA,@R0;寻址方式:
(A)=
13.阅读下列程序段,写出每条指令执行后的结果,并说明此程序段完成什么功能?
MOVR1,#30H;(R1)=
MOVA,#64H;(A)=
ADDA,#47H;(A)=,(CY)=,
(AC)=
DAA;(A)=,(CY)=,
(AC)=
MOV@R1,A;(R1)=,(30H)=
此程序段完成的功能:
14.已知(R0)=20H,(20H)=10H,(P0)=30H,(R2)=20H,执行如下程序段后(40H)=
MOV@R0,#11H
MOVA,R2
ADDA,20H
MOVPSW,#80H
SUBBA,P0
XRLA,#45H
MOV40H,A
15.已知(R0)=20H,(20H)=36H,(21H)=17H,(36H)=34H,执行过程如下:
MOVA,@R0
MOVR0,A
MOVA,@R0
ADDA,21H
ORLA,#21H
RLA
MOVR2,A
RET
则执行结束(R0)=(R2)=
16.执行下面一段程序;
MOVSP,#60H
MOVA,#10H
MOVB,#01H
PUSHA
PUSHB
POPA
POPB
A,B的内容是:
(A)=(B)=
17.设在31H单元存有#23H,执行下面程序:
MOVA,31H
ANLA,#0FH
MOV41H,A
MOVA,31H
ANLA,#0F0H
SWAPA
MOV42H,A
则(41H)=(42H)=
18.程序填空
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
19、程序如下
2506HM5:
MOVSP,#58H;
2509H MOV10H,0FH;
250CHMOV11H,#0BH;
250FHACALLXHD;
2511HMOV20H,11H
2514HM5A:
SJMPM5A
XHD:
PUSH10H
PUSH11H
POP10H
POP11H
RET
问:
(1)执行POP10H后堆栈内容?
(2)执行M5A:
SJMPM5A后,(SP)=?
(20H)=?
20、解读下列程序,然后填写有关寄存器内容
(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
若PSW=00,当执行完上述程序段后,将PSW各位状态填入下表:
PSW
CY
AC
F0
RS1
RS0
OV
F1
P
1
1
0
1
0
0
0
1
21、设R0=20H,R1=25H,(20H)=80H,(21H)=90H,(22H)=A0H,(25H)=A0H,
(26H)=6FH,(27H)=76H,下列程序执行程序后,结果如何?
CLRC
MOVR2,#3
LOOP:
MOVA,@R0
ADDCA,@R1
MOV@R0,A
INCR0
INCR1
DJNZR2,LOOP
JNCNEXT1
MOV@R0,#01H
SJMP$
NEXT:
DECR0
SJMP$
(20H)=()、(21H)=、(22H)=、(23H)=、CY=
A=、R0=、R1=。
22、设片内RAM中(59H)=50H,执行下列程序段
MOV A,59H
MOV R0,A
MOV @R0,A
MOV A,#25H
MOV 51H,A MOV 52H,#70HA=,(50H)=,(51H)=,(52H)=.
23.MOVA,#10H(A)=
MOVB,A(B)=
MOVA,B(A)=
ADDA,B(A)=
MOV20H,A(20H)=
INCA(A)=
MOV21H,A(21H)=
INCA(A)=
MOV22H,A(22H)=
24.MOVDPTR,#2000H(DPTR)=
MOVA,#80H(A)=
MOVX@DPTR,A(2000H)=
INCDPTR(DPTR)=
MOVA,#90H(A)=
MOVX@DPTR,A(2001H)=
MOVDPTR,#2000H(DPTR)=
MOVXA,@DPTR(A)=
MOVB,A(B)=
INCDPTR(DPTR)=
MOVXA,@DPTR(A)=
25、改正下列指令
MOV@R3,A
MOVDPTR,A
INC@R3I
DECDPTR
ADDC#30H,A
26.设内部RAM(30H)=5AH,(5AH)=40H,(40H)=00H,端口P1=7FH,问执行下列指令后,各有关存储单元(即R0,R1,A,B,P1,30H,40H及5AH单元)的内容如何?
(8分)
MOVR0,#30H
MOVA,@R0
MOVR1,A
MOVB,R1
MOV@R1,P1
MOVA,P1
MOV40H,#20H
MOV30H,40H
参考答案:
1.(A)=_04H__;(CY)=__1___;(P)=___1__;(B)=__00H_;
2.(X)=20;(Y)=0;
3.MOVDPTR,#TABL;注释:
将表头赋值给DPTR
MOVA,R3
ANLA,#0FH;注释:
对A做与操作,保留A的第四位
MOVCA,@A+DPTR;注释:
查表,A的值表示在表中的次序
(R2)=92H;(R3)=99H;
4.1)根据程序内容填空:
①#10H;②ET1;
2)定时器T1的定时时间是多少?
50ms
3)寄存器R7在程序中的作用是什么?
乘数,20次*50ms=1s
4)该程序完成什么功能?
由P1.2输出周期为2s,占空比1:
1的方波信号
5.A,B的内容是:
(A)=#01H(B)=#10H
6.JBACC.7,NEG;注释:
判断A中值的正负;
MOVA,#02H
SUL:
MOVDPTR,#BUF
MOVX@DPTR,A;注释:
把A的值放入Y中;
功能:
分段函数计算,Y=2(X>0)
Y=0(X=0)
Y=0FEH(X<0)
7.(P1)=9BH
8.(A)=8BH(或10001011B)
(CY)=不影响
9.(R0)=7FH
(7EH)=00H
(7FH)=41H
10.(PC)=0345H
(61H)=25H
(62H)=01H
11.(data)×10操作
12.(60H)=35H,(A)=19H,(R0)=30H,(30H)=0FH。
(1)立即寻址;48H
(2)直接寻址;4EH
(3)寄存器间接寻址;09H
13.阅读下列程序段,写出每条指令执行后的结果,并说明此程序段完成什么功能?
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
此程序段完成的功能:
求两个BCD码数(64H和47H)的和,并将结果放在内部RAM的30H单元。
14.(20H)←11H
(A)←20H
(A)←(A)+(20)
(CY)=1
(A)-(P0)-(CY)→(A)即(A)←00H
(A)+45H→(A)即(A)←45H
(40H)←45H
15.(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
16.(A)=01H(B)=10H
17.(41H)=03H(42H)=02H
18.1)#20HR1LOOP
2)41HR0
3)40H#0AHA
4)#40H#0FH
19.1)执行ACALL指令时:
PC+2➞PC:
(SP)+1➞SP PC0~PC7➞(SP)
(SP)+1➞SP PC8~PC15➞(SP)
2) 子程序返回时,点地址弹出,SP=58H
所以 (1)执行POP10H后,堆栈内容如左图所示.
5C0B
5B0F
5A25
5911
58
(2)执行执行M5A:
SJMPM5A后,(SP)=58H,
(20H)=0FH
20、(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
21.(20H)=(20H)、(21H)=00H、(22H)=17H、(23H)=01H、CY=1、A=17H、R0=23H、R1=28H
22.A=25H,(50H)=0,(51H)=25H,(52H)=70H
23.MOVA,#10H(A)=10H
MOVB,A(B)=10H
MOVA,B(A)=20H
ADDA,B(A)=20H
MOV20H,A(20H)=21H
INCA(A)=21H
MOV21H,A(21H)=22H
INCA(A)=22H
MOV22H,A(22H)=22H
24.MOVDPTR,#2000H(DPTR)=2000H
MOVA,#80H(A)=80H
MOVX@DPTR,A(2000H)=80H
INCDPTR(DPTR)=2001H
MOVA,#90H(A)=90H
MOVX@DPTR,A(2001H)=90H
MOVDPTR,#2000H(DPTR)=2000H
MOVXA,@DPTR(A)=80H
MOVB,A(B)=80H
INCDPTR(DPTR)=2001H
MOVXA,@DPTR(A)=90H
25、改正下列指令
MOV@R3,AMOV@R1,A
MOVDPTR,AMOVXDPTR,A
INC@R3INCA
DECDPTRDECR0
ADDC#30H,AADDCA,#30H
26.MOVR0,#30H;R0=30H
MOVA,@R0;A=5AH
MOVR1,A;R1=5AH
MOVB,R1;B=5AH
MOV@R1,P1;(5AH)=7FH
MOVA,P1;A=7FH
MOV40H,#20H;(40H)=20H
MOV30H,40H;(30H)=20H
每一条指令执行后的结果如注释字段所标。
最后结果为:
R0=30H,R1=5AH,A=7FH,B=5AH,P1=7FH,(30H)=20H,(40H)=20H,(5AH)=7FH。
第六部分编程题
1.若有两个无符号数x、y分别存放在内部存储器的30H、31H单元中,试编写一个程序实现x×2.5+y,结果送入32H(低八位)、33H(高八位)两个单元中。
程序需加上注释。
2.编写一程序将片外数据存储器中7000H~70FFH单元全部清零。
3.已知在累加器A中存放一个BCD数(0~9),请编程实现一个查平方表的子程序。
4.请使用位操作指令实现下列逻辑操作:
BIT=(
∨P1.0)∧(11H∨CY)
5.已知变量X存于VAR单元,函数值Y存于FUNC单元,按下式编程求Y值。
Y=
6.已知在R2中存放一个压缩的BCD码,请将它拆成二个BCD字节,结果存于SUM开始的单元中(低位在前)。
7.将存于外部RAM8000H开始的50H数据传送0010H的区域,请编程实现。
8.已知一MCS—51单片机系统的片内RAM20H单元存放了一个8位无符号数7AH,片外扩展RAM的8000H存放了一个8位无符号数86H,试编程完成以上两个单元中的无符号数相加,并将和值送往片外RAM的01H、00H单元中,同时将所编写程序运行完成后的数据和状态添入下表中给出的PSW的有关位以及寄存器A、DPTR和RAM单元中。
CY
A
DPTR
片外01H
片外00H
片外8000H
9.阅读程序并填空,形成完整的程序以实现如下功能。
(5分)
有一长度为10字节的字符串存放在8031单片机内部RAM中,其首地址为40H。
要求将该字符串中每一个字符加偶校验位。
(以调用子程序的方法来实现。
)
源程序如下:
ORG1000H
MOVR0,#40H
MOVR7,#10
NEXT:
MOVA,①
ACALLSEPA
MOV@R0,A
INCR0
DJNZ②,NEXT
SJMP$
SEPA:
ADDA,#00H
③PSW.0,SRET
ORLA,④
SRET:
⑤
10.从内部RAM30H单元开始,有10个单字节数据。
试编一个程序,把其中的正数、负数分别送40H和50H开始的内部RAM单元。
(10分)
11.将内部RAM20H为首的16个单元的8位无符号数排序写出程序,并作适当注释
12.将字节地址30H~3FH单元的内容逐一取出减1,然后再放回原处,如果取出的内容为00H,则不要减1,仍将0放回原处。
13.应用单片机内部定时器T0工作在方式1下,从P1.0输出周期为2ms的方波脉冲信号,已知单片机的晶振频率为6MHZ。
(1)计算时间常数X,应用公式X=216-t(f/12)
(2)写出程序清单
14.片内RAM40H开始的单元内有10B二进制数,编程找出其中最大值并存于50H单元中.(10分)
15.编程将片内RAM30H单元开始的15B的数据传送到片外RAM3000H开始的单元中去。
参考答案:
1.采用简单的移位操作实现2.5乘法;
x*2.5+y=x*2+x/2+y;
如果只需要把x左移
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第五 部分 程序 阅读
![提示](https://static.bdocx.com/images/bang_tan.gif)