单片机练习题Word文档格式.docx
《单片机练习题Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机练习题Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
2.MCS-51的堆栈区在A中。
A.内部RAMB.外部RAMC.内部ROMD.外部ROM
3.MCS-51有4个三种不同的寄存器。
其中B的寻址范围是00H—7FH/FFH。
A.内部ROMB.内部RAMC.外部ROMD.外部RAM
4.对8751编程时,其片内所需12位地址码是由C端口输入的。
A.P1.3-P1.0和P0B.P2.3-P2.0和P0
C.P2.3-P2.0和P1D.P3.3-P3.0和P2
5.对8751校验时,其读出数据由A端口输出。
A.P0B.P1C.P2D.P3
6.在8031的CPU中,驱动力最大的端口是A。
7.8031执行MOVXA,@DPTR指令时,需要两次访问内存,访问次序为B。
A.外部RAM和外部RAMB.外部ROM和外部RAM
C.外部RAM和外部ROMD.外部ROM和外部ROM
8.8031在执行MOVCA,@A+PC指令时,需要两次访问内存,其次序是D。
9.如下引脚中,C是外部ROM存储器的选通线。
A.RD和WRB.EAC.PSEND.ALE
10.如下两条指令执行后,累加器A和PSW中的内容是A。
MOVA,#19H
ADDA,#66H
A.7FH和01HB.85H和01HC.85H和03HD.7FH和03H
第三章MCS-51单片机指令系统
1.填空题
1.MCS-51指令系统中的指令采用单地址指令格式,每条指令均由操作码和操作数/操作数地址等字段组成。
其中,操作码字段是必选段,下地址字段隐含在程序计数器PC中。
2.指令码中含有操作数本身的指令,其寻址方式比为立即型寻址。
3.指令码中含有操作数所在寄存器号的指令,其源操作数的寻址方式一定是寄存器间接寻址。
4.在SJMPrel指令中,以其在只读存储器中始址为参考点可以在-126—+129范围内寻址。
5.MCS-51有两条查表指令,指令的通式是MOVCA,@A+DPTR和MOVCA,@A+PC。
6.只能读外部RAM零页单元中的内容的指令时MOVXA,@Ri。
7.除INCSP指令外,还有PUSHdirect和调用指令执行时可以使SP中内容加1。
8.除DECSP指令外,还有POPdirect和RET/RETI(或返回)指令可以使SP中内容加1。
9.不带Cy的移位指令有两条,一条是RLA,另一条是RRA。
10.能对PC中内容运算处理为目的的指令,必然属于控制转移类指令。
11.MCS-51有两条可以根据累加器A中的内容为判断条件的转移指令,这两条指令时JZrel和JNZrel。
12.MCS-51有两条减1条件转移指令,通常在循环程序设计中使用。
该指令通式是:
DJNZRn,rel和DJNZdirect,rel。
13.调用指令的作用有两个:
一个是断点地址入栈;
另一个是子程序始址送PC。
14.返回指令的作用是:
断点地址(栈内)恢复到PC。
15.MCS-51有两条可以根据Cy中内容为条件的转换指令,它们是JCrel和JNCrel。
16.MCS-51有三条可以根据位地址中内容为判断条件的转移指令,它们是:
JBbit,rel、JNBbit,rel和JBCbit,rel。
1.MCS-51中无D指令。
A.单字节B.双字节C.三字节D.四字节
2.MCS-51中无C指令。
A.单机器周期B.双机器周期C.三机器周期D.四机器周期
3.如下指令中的源操作数,B是直接寻址。
A.MOVA,#20HB.MOVA,20HC.MOVA,R0D.MOVA,@R0
4.如指令中的源操作数,A是位寻址。
A.SETB20HB.MOVA,20HC.MOVA,#20HD.DJNZ20H,rel
5.如下指令中,C指令的源操作数寻址方式不属于变址寻址。
A.MOVCA,@A+PCB.MOVCA,@A+DPTR
C.MOVXA,@DPTRD.JMP@A+DPTR
6.如下指令中,D是合法指令。
A.MOVR1,R0B.MOV@R0,R5
C.MOV#20H,AD.MOV20H,#20H
7.C指令的转移范围最小。
A.LJMPaddr16B.AJMPaddr11
C.SJMPrelD.JMP@A+DPTR
8.如下指令中,B指令是以判断Cy中内容为条件的转移指令。
A.JZrelB.JCrelC.JBbit,relD.JBCbit,rel
9.A是字节型指令。
A.CLRAB.CLRCC.CLR20HD.SETBC
10.如下指令中,C指令执行后均能使bit中内容始终为零。
A.JBbit,relB.JNBbit,relC.JBCbit,rel
11.如下指令中,D指令的寻址方式是变址寻址。
A.LJMPaddr16B.AJMPaddr11
12.如下指令中,B类指令执行时均能使SP内容加1.
A.XCHA,R2B.PUSHACC
RLALCALLSQR
C.DJNZR2,LOOPD.ADDA,#20H
CJNEA,R2,NEXTSUBBA,R2
第四章汇编语言程序设计
1.机器语言有两种形式,一种是二进制形式;
另一种是16进制形式,二进制形式的机器语言可以为CPU直接执行。
2.汇编语言是一种符号语言,因机器而异,所编程序需汇编成机器语言才能直接为CPU执行。
其优点是可直接操作到机器内部的寄存器和RAM单元。
3.MCS-51的汇编语句采用典型的四分段格式:
标号段、操作码段、操作数段和注释段。
其中,操作码段是必选段,用来指示CPU执行何种操作。
4.注释段以分号开头,指示指令段或程序段的作用;
标号段是以大写字母开头的字母数字串(最多8个),标号段中禁止使用保留字和寄存器号作标号。
5.MCS-51宏汇编中,有两条可以为变量赋值的伪指令,他们是EQU和DATA/XDATA。
6.如下程序为汇编程序识别和执行后,(1500H)=00H,(1501H)=45和(1502H)=41H。
ORG1500H
TAB:
DW45
DB'
A'
7.可以定义存储空间的伪指令是DS。
8.可以定义位地址的伪指令是BIT。
9.用户程序编写好后,必须汇编成机器码才能为机器执行。
MCS-51源程序的汇编有人工汇编和机器汇编两种,但原理相同。
机器汇编需要汇编程序对用户程序进行两次扫描才能完成。
第一次扫描主要是确定每条指令的指令码,第二次扫描是计算机指令码的标号值和地址偏移量。
10.在机器汇编的第二次扫描中,标号值或地址偏移量的计算公式是地址偏移量=目的地址-转移指令始址-转移指令字节数。
11.简单程序又称顺序程序或直线程序,有时又称为无分支程序,其特点是程序中不含有转移指令。
12.分支程序有时也称为散转程序,其特点是程序中含有无条件转移指令。
13.MCS-51循环程序有循环初始化、循环体和循环结束处理等三部分组成。
其中循环初始化程序段中通常要给循环变量(地址指针)和循环计数器赋初值;
循环体中必定含有一条减一条件判断指令。
14.循环程序有两种类型:
一是先判断后处理,二是先处理后判断。
15.查表指令有两条:
一条是用PC作为基址来查表,另一条是用DPTR作为基址来查表,但查表原理相同。
后者在查表前DPTR中应放有被查表的始址,前者在查表时PC中的基址不等于被查表始址,故它在查表指令前必须有一条ADDA,#date指令,以便使PC+date=被查表始址。
16.子程序设计时应注意四点:
一是子程序前要冠以标号,标号应以子程序任务定名;
二是主程序中要有一条调用指令才能转入子程序执行;
三是子程序中必须安排一条返回指令才能使CPU回到主程序主程序执行;
四是CPU转入子程序或从子程序返回主程序前都需要有参数传递。
17.带符号补码数/或减运算的算法:
一是先对两数进行符号数扩展;
二是对符号数扩展后的两数进行加/减运算。
18.带符号补码数的乘除法算法:
一是符号位单独处理;
二是把参加运算的两数变成绝对值;
三是对绝对值进行乘除运算;
四是把运算结果变成补码。
2.指出下列程序的运行结果
1.已知:
(20H)=X(X≤50)和A=00H,如下程序为CPU执行后的DA中的内容是什么?
ORG0100H
MOVDPTR,#1000H
JMP@A+DPTR
DONE:
MOVDA,A
SJMP$
ORG1000H
MOVA,20H答案:
(DA)=2X
RLA
SJMPDONE
ORG1080H
MOVA,20H
SJMPDONE
END
2.上例中,若累加器A中内容为80H,则重新执行上述程序后DA中内容是什么?
MOVA,20H
RLA答案:
(DA)=4X
3.已知:
(71H)=X,SP=71H和外部RAM的(2000H)=Y。
试问如下程序执行后外部RAM的2500H单元中内容是什么?
(X和Y均不超过63)。
ORG0300H
MOVDPTR,#2000H
MOVXA,@DPTR
MOVR2,A
POPACC
ADDA,R2答案:
(2500H)=2(X+Y)
MOVDPTR,#2500H
MOVX@DPTR,A
4.已知:
a和b是两个小于8的二进制数,分别放在DA和DB单元。
试问如下程序执行后DC单元中的内容是什么?
ORG0400H
MOVA,DA
ACALLSQR
MOVR1,A
MOVA,DB
ACALLAQR
ADDA,R1
MOVR1,A
MOVB,DB
MULAB
MOVDC,A
SQR:
INCA
MOVCA,@A+PC
RET
SQRTAB:
DB0,1,4,9,16,25,36,49,64,81
END答案:
(DC)=a2+2ab+b2
5.如下程序执行后累加器A和70H单元中内容是什么?
ORG0500H
MOVA,#0AAH
MOVDPTR,#0070H
MOVR0,#70H答案:
A=BAH(70H)=ABH
MOV@R0,A
MOVA,#0BBH
XCHDA,@R0
6.已知:
外部RAM(1000H)=X,如下程序执行后20H和SP中的内容是什么?
(X≤85)
ORG0600H
MOVSP,#60H
MOVB,A
(20H)=3XSP=60H
ADDA,B
MOV61H,A
INCSP
POP20H
7.已知:
内部RAM(20H)=FFH(-1),如下程序执行后30H单元中内容是什么?
(X≤127)
ORG0700H
JNBACC.7,NEXT
MOV30H,#X答案:
(30H)=X
NEXT:
MOV30H,#2X
8.已知:
内部RAM(20H)=90H,如下程序执行后30H单元中的内容是什么?
ORG0800H
ADDA,#80H
MOV30H,#X答案:
(30H)=2X
9.如下程序执行到MOV30H,#X时,71H、72H和SP中的内容是什么?
ORG0900H
MOVSP,#70H
LCALLSQR答案:
(71H)=断点地址高8位
SJMP$(72H)=断点地址低8位
MOV30H,#XSP=72H
10.如下程序执行后会产生什么效果?
为什么?
ORG0A00H
MOVDPTR,#2000H
MOVRO,#20H
LOOP:
MOVR2,#0AH
MOVXA,@DPTR
MOV@R0,A
INCDPTR
INCR0
DJNZR2,LOOP
答案:
该程序执行后会进入死循环。
因为R2中内容始终都不会为0.
3.编程题
1.从外部RAM的SOUCE(二进制8位)开始有一数据块,该数据块以字符$结尾。
请编写程序,把他们传送到以内部RAM的DIST为起始地址的区域($字符也要传送,它的ASCII码为24H)。
SOUCEDATA30H
DISTDATA20H
MOVR0,#SOUCE;
R0←源地址
MOVR1,#DIST;
R0←目标地址
MOVXA,@R0;
A←源数
CJNEA,#24H,NEXT;
若A<
>
$,则NEXT
MOV@R1,A;
传送$符
MOV@R1,A;
传送数据
INCR0;
源指针加1
INCR1;
目的指针加1
SJMPLOOP
2.外部RAM从2000H到2100H有一数据块,请编写将他们传送到从3000H到3100H区域的程序。
MOVDPTR,#3000H;
目标地址送3000H
PUSHDPL;
目标地址送栈
PUSHDPH
MOVDPTR,#2000H;
源地址送DOTR
MOVR2,#01H;
块长送R3R2
MOVR3,#01H
MOVXA,@DPTR;
源数送A
MOVR5,DPH;
源针加1送R5R4
MOVR4,DPL
POPDPH;
目标地址送DPTR
POPDPL
MOVX@DPTR,A;
送数
INCDPTR;
目标地址加1
送栈
MOVDPH,R5;
源针送DPTR
MOVDPL,R4
CLRC;
Cy清零
MOVA,R2;
R2-1送R2
SUBBA,#01H
MOVA,R3;
R3-Cy送R3
SUBBA,#00H
MOVR3,A
ORLA,R2;
R3VR2送A
JNZLOOP;
R2VR3<
0,则LOOP
SJMP$;
否则,停机
3.设在片内RAM的20H单元中有一数,其值范围是0—100,要求利用查表法求此数的平方值并把结果存入片外RAM的20H和21H中(20H中为低字节),试编写相应的程序。
MOVR0,#20H;
R0←外20H
MOVA,20H;
A←源数
MOVB,A
ADDA,#0BH;
修改A
MOVCA,@A+PC;
A←平方值L
MOVX@R0,A;
送存
MOVA,B
ADDA,#03H;
INCA;
指向结果H地址偏移量
查表得平方值H
SJMP$
SQRTAB:
DW0,1,4,9,……,10000
附:
课本重要知识点及重要例题
第1章1.1计算机中数制及数的转换
1.3.1机器数的原码、反码和补码
1.4.1BCD码和ASCII码
第2章2.1.1CPU结构
2.1.2存储器的结构(P53的表2-2和P57表2-5
2.1.3I/O端口非常重要,老师说肯定会
2.2.1引脚及其功能出一个题目)
2.4.1机器周期和指令周期
第3章全部
重要例题:
P100例3.14P112例3.29
P114例3.31P121例3.38、例3.39
第4章全部
P138例4.2P139例4.3P140例4.5
P142例4.7P146例4.9P147例4.10
P152例4.13P156例4.16P157例4.17
注:
P143例4.8、P148例4.12不用看!
!
第6章6.1概述
6.2MCS-51的中断系统
6.4.2采用查询法扩展外部中断源
预祝大家取得好成绩!