单片机考试常见试题程序分析题.docx
- 文档编号:10817228
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:27
- 大小:22.81KB
单片机考试常见试题程序分析题.docx
《单片机考试常见试题程序分析题.docx》由会员分享,可在线阅读,更多相关《单片机考试常见试题程序分析题.docx(27页珍藏版)》请在冰点文库上搜索。
单片机考试常见试题程序分析题
(A)=3CH
(A)=3CH
(A)=A5H
ADDCA,3CH(A)=C6H
程序分析及编程
1.设(A)=04H,(CY)=1,写
出下列各条指令的结果。
RLA;(A)=08H
RRA;(A)=02H
RLCA;(A)=09H
RRCA;(A)=82H
2设
(A)=7AH,(R0)=30H,(30H)二
A5H,(CY)=1,写出下列各条指令的结果。
MOVA,R0
(R0)=30H
XCHA,R0
(R0)=30H
XCHDA,@R0(R0)=30H(30H)=30H
ADDA,#30H(A)=D5H
(CY)=1
(CY)=1
SUBBA,#30H(A)=D5H
(CY)=1
4.已知程序执行前有
A=02HSP=52H(51H)=FFH(52H)二FFH。
下述程序执行后:
请问:
A=(),SP=(),
(51H)=(),(52H)=(),
PC=()。
POPDPH
POPDPL
MOVDPTR,#4000H
RLA
MOVB,A
MOVCA,@A+DPTR
PUSHA
MOVA,B
INCA
MOVCA,@A+DPTR
PUSHA
RET
ORG4000H
DB
10H,80H,30H,50H,30H,
50H
答:
(A)=50H,(SP)
=50H,(51H)=30H,
(52H)=50H,(PC)=5030H
5•假定A=83HJ(RC)=17H,
(17H)=34H,执行以下指
令后,A的内容为()。
:
ANLA,#17H
ORL17H,A
XRLA,@RC
CPLA答:
CCBH
6.女口果DPTR=5C7BH
SP=32H(3CH)=50H,
(31H)=5FH,(32H)
=3CH则执行下列指令
后则:
DPH=(
),dpl=
(),
SP=()
POP
DPH
POP
DPL
POP
SP
答:
DPH=3CH,
DPL=5FH,SP=4FH
7•假定,SP=60HA=30H
B=70H执行下列指令后,
SP的内容为()61H单元的内容为(),62H单元的内容为()。
PUSHA
PUSHB答:
62H,
30H,70H
8.计算下面子程序中指令的偏移量和程序执行的时间(晶振频率为12MHz)o
DL1:
M0VR4,#255;1个
机器周期
DL2:
MOVP1,R3;2个机器
周期
DJNZR4,DL2;2个
机器周期
DJNZR3,DL1;2个
机器周期
RET;2个机器
周期
答:
15348us析:
((2+2)
X255+1+2)X15+1+2
=15348us
9.假定A=83H(R0)=17H,
(17H)=34H,执行以下指令后,A的内容为()。
ANLA,#17H
ORL17H,A
XRLA,@RO
10.女口果(DPTR)=507BH(SP)=32H,(30H)=50H,
(31H)=5FH,(32H)=3CH,则执行下列指令后:
DPH内容为(),DPL内容为
(),SP内容为()。
POPDPH;
POPDPL;
POPSP;
答:
(DPH)二3CH(DPL=5FH
(SF)=50H
11•假设外部数据存储器
2000H单元的内容为80H,执行下列指令后,累加器A中的内容为()。
MOVP2,#20H
MOVRO,#00H
MOVXA,@R0
答:
累加器A中的内容为
12.阅读下列程序段并回答问题。
(1).该程序执行何种操作
(2).已知初值
(60H)=23H(61H)=61H
运行程序后62H内容
CLRC
MOVA,#9AH
SUBBA,60H
ADDA,61H
DAA
MOV62H,A答:
1)、
该程序是单字节BCD码运算,是将(61H)—(60H)
—62H
2)、(62H)=38H
13.试编写1个程序,将内
部RAM中45H单元的高4位
MOVR3,#15H;1个
机器周期
CPL
A答:
OCBH
(80H)
清0,低4位置1。
答:
MOVA,45H
ANLA,#0FH
ORLA,#0FH
MOV45H,A
14.试编写程序,查找在内
部RAM勺30H-50H单元
中是否有0AAH这一数
据。
若有,则将51H单元置为“01H';若未找至V,则将51H单元置为
“00H'。
答:
START:
MOV
R0,#30H
MOV
R2,#20H
LOOP:
MOVA,@R0
CJNE
A,#0AAH,NEXT
MOV
51H,#01H
LJMPEXIT
NEXT:
INCR0
DJNZ
R2,LOOP
MOV
51H,#00H
EXIT:
RET
15.编写程序,要求使用T0,采用方式2定时,在输出周期为400卩s,占空比为10:
1的矩形脉冲。
解:
根据题意,从输出的矩形脉冲的高低电平的时间为10:
1,则高低电平的时间分别为口s和卩s。
如果系统采用6MHz晶振的话,Tcy2s,因此高低电平输出取整,则约为364卩s和36卩s。
编写程序如下:
ORG0000H
LJMPMAIN
ORG000BH
LJMPIT0P
定时器/计数器TO为定时方
式2
MOVTL0,#4AH;定时364
卩s初值赋值
SETBTR0;启动T0,
开始计数
SETBET0;允许T0中
断
SETBEA;CPU开中断
SETB
WAIT:
AJMPWAIT
IT0P:
CLREA
CLR;关中
断
MOVR0,#9
DLY:
DJNZR0,DLY
INCDPTR
as初值赋值
18.设单片机晶振频率为
;延时26□s
MOVTL0,#4AH;定时364
SETBEA
RETI
16.设在外部RAM中有三个
连续单元2001H,2002H,2003H,其中2001H和2002H单元中分别存放两个8位无符号二进制数,比较这两个数的大小,然后将大数送到2003H单元。
COMPARE:
MOVDPTR,#200
MOVXA,@DPTR
MOVR0,A
INCDPTR
MOVXA,@DPTR
SUBBA,R0
JNCLOOP
MOVA,R0
RET
LOOP:
INCDPTR
MOVX@DPTR,A
RET
17.将内部RAM40H开
始的10个单元,搬移到50H开始的10个单元中。
MOVR0,#40H
MOVR1,#50H
MOVR2,#10
LOOP1:
MOVA,@R0
MOV@R1,A
INCR0
INCR1
DJNZR2丄OOP1
RET
6MHz使用定时器0,以工作方式2,在引脚输出一个周期为200us连续方波
解:
MOVTMOD,#02H
MOVTH0,#0CEH
MOVTLO,#0CEH
SETBTR0
LOOP:
JBCTFO,LOOP1
AJMPLOOP
LOOP1:
CPL
19.编写一段程序,功能要求为:
当引脚的电平正跳变时,对的输入脉冲进行计数;当引脚的电平负跳变时,停止计数,并将计数值写入R0R1(高位存R1,低氐位存R0)。
答:
将的输入脉冲接入INTO,即使用T0计数器完成对口的脉冲计数。
编写程序如下:
ORG
0000H
LJMP
MAIN
ORG
000BH
LJMP
IT0P
MAIN:
JNB
MAIN
MOVTMOD,#05H;定时
器/计数器T0为计数方式1
SETBTR0
;启动
T0,开始计数
SETBET0
;允许
T0中断
SETBEA
;CPU开中
断
WAIT:
JB
WAIT
CLR
EA
CLR
TR0
MOV
R1,TH0
MOV
R0,TL0
AJMP$
IT0P:
INCR2
RETI
20.试编写一个程序(例如
将05H和06H拼为56H),设
原始数据放在片外数据区
2001H单元和2002H单元
中,按顺序拼装后的单字节
数放入2002H
答:
编程思路:
首先读取
2001H的值,保存在寄存器
A中,将寄存器A的高四位和低四位互换,再屏蔽掉低四位然后将寄存器A的值保存到30H中,然后再读取2002H的值,保存在寄存器
A中,屏蔽掉高四位,然后将寄存器A的值与30H进行或运算,将运算后的结果保存在2002H中。
ORG0000H
MAINMOVDPTR#2001H
;设置数据指针的初值
MOVXA,@DPTR读取
2001H的值
SWAPA
ANL
A,#0F0H;屏蔽掉
低四位
MOV
30H,A;保存A
INC
DPTR;指针指向下
一个
MOVXA,@DPTR读取
2002H的值
ANLA,#0FH;屏蔽掉
高四位
ORLA,30H;进行拼装
MOVX@DPTRA;保存到
2002H
END
21.编写程序,将外部数据
存储器中的4000H-40FFH
单元全部清零。
解:
本题主要考察了对外部
数据块的写操作;编程时只要注意循环次数和MOVX旨令的使用就可以了。
ORG0000H
MAINMOVA#0;送预置
数给A
MOVRO,#0FFH;设置
循环次数
MOVDPTR#4000H;设置
数据指针的初值
LOOPMOVX@DPTRA
;当前单元清零
INCDPTR;指向下一个
单元
DJNZR0,LOOP是否结束
END
22.编写程序,采用8255A的C口按位置位/复位控制字,将PC7置0,PC4置1,
(已知8255A各端口的地址
为7FFCH-7FFF)
解:
本题主要考察对8255A的C口的操作。
其方式控制字的高位为0时,低四位对C口进行置位。
由题目我们得到了方式控制字的地址
为7FFFH
ORG0000H
MAIN:
MOV
DPTR,#7FFFH控制字寄存
器地址送DPTR
MOVA,#0EH
;将PC7置0
MOVX@DPTR,A
MOVA,#09H
;将PC4置1
MOVX@DPTR,A
END
23.试编写逻辑运算程序,
功能为:
F=X(Y+Z);
F=XYZ
其中FXYZ均为位变量,
依次存在以30H为首址的位寻址区中。
解
(1):
FBIT
30H
XBIT
31H
YBIT
32H
ZBIT
33H
L0G1:
M0V
C,Y;Y—C
ORL
C,Z;(Y+Z)—C
ANL
C,X;X(Y+Z)—C
MOV
F,C;X(Y+Z)—F
RET;
解
(2):
LOG2:
MOV
C,Y;Y—C
ANL
C,Z;YZ—C
ANL
C,/X;XYZ—C
CPL
C;XYZ—C
MOV
F,C;XYZ—F
RET;
24.试编写程序,统计内RAM
30H~50H单元中FFH的个
数,并将统计结果存51H.
解:
编程如下:
LOKF:
MOV51H,#0;
计数器清零
MOVR0,#30H;
置数据区首址
LOP:
MOVA,@R0;读
数据
CPLA;
取反
JNZLP1;
判FFH非FFH转
INC
51H;FFH,计数
LP1:
INCRO;指
向下一数据
CJNER0,#51H,LOP;
判循环
RET
25.试编写程序,找出外RAM
2000H~200FH数据区中的最
小值,并放入R2中。
解:
编程如下:
SECH:
MOVDPTF#2000H;
置外RAM数据区首址
MOVR2,#OFH;置夕卜RAM
数据区长度(N-1)
MOVXA,@DPTR;
读第一个数据
MOVB,A;假设第一
个数据为最小值
SLOP:
INCDPTR;指向下一
个数据
MOVXA,@DPTR;
读下一个数据
CJNEA,B,SLP1;新数据
与最小值比较
SLP1:
JNCSLP2;新数据
》最小值,判断循环
MOVB,A;新数据V最小值,新数据-B
SLP2:
DJNZR2,
SLOP;判循环结束否
MOVR2,B;最小
值—R2
RET
26.已知ROM中存有0~100的平方表,首地址为TABDS试根据累加器A(<100)中的数值查找对应的平方值,存入内RAM31H30H双字节)。
解:
编程如下:
DSQR:
MOVDPTR,#TABD置
ROMP方表首地址
ADDA,Acc;AX
2—A
MOVCA,@A+DPTR读
平方值高8位
MOV31HA;平方值高8
位—31H
位
MOVCA@A+DPTR;读
平方值低8位
MOV30HA;平方值低
8位—30H
RET
TABDSDW0,0,0,1,0,
4,0,9,0,16,0,25,…,27H,10H;0~100平方表(双字节)
27.试编程实现3字节无符
号数加法:
R7R6R5+R4R3R2
—@R0(3个连续单元)。
解:
编程如下:
ADD3MOVA,R5
ADDA,R2;
低位加
MOV@R0,A;
存低位和
INCA;指向平方值低8
INCR0;
修改存储单元
MOVA,R6;
ADDCA,R3;
中位加
MOV@R0,A;
存中位和
INCR0;
修改存储单元
MOVA,R7;
ADDCA,R7;
高位加
MOV@R0,A;
存高位和
RET
28.试编写程序,将外部
RAM2000H~20F数据块,传送到3000H~30FF岖域。
解:
编程如下:
DMOV:
MOVDPTR#2000H;
置源数据区首址
MOVR2#00H;置数据长
度(256个)
DLOP:
MOVXA@DPTR;
读数据
MOVDPH#30H;置目的数
据区高8位地址
MOVX@DPTRA;存数
据
MOVDPH#20H;置源数据
区高8位地址
INCDPTR;修改源数据
区地址
DJNZR2,DLOP;判循环
结束否
RET
29.从内RAM20单元开始存
有一组带符号数(补码),其个数已存放在仆H单元。
要求统计其中大于0,等于0和小于0的数的个数,并把统计结果分别存入ONE
TWOTHREE个单元。
解:
编程如下:
ONEEQU30H
TWOEQU31H
THREEEQU32H
STORMOVR0,#20H;置
数据区首址
SLOP:
MOVA,@R0;
读数据
JZ
LP1;数据=0,
转
JB,LP2;数
据<0,转
INCONE;数据〉0,
ONE单元加1
LP0:
INCRO;指向下
一数据
DJNZ1FH,
SLOP;判统计结束否未
;返回循环体
INC
;数据v0,
1
结束循环
RET;统计结束,TWO
单元加1
LP1:
INCTWO;数据=0,TW弹元加1
SJMP
LPO
LP2:
THREE
THREE单元力口
SJMP
LPO
体
30.设在内部数据存储器中存放有20个字节数据,其起始地址为M试编写程序,找出数0AH的存放地址,并送入N单元。
若OAF不存在,则将N单元清零。
解:
程序如下:
;返回循环
MEQU30H
NEQU2FH
SECH:
MOVR0,#M
MOVR1,#20
LOOP:
CJNE@R0,#0AH,LP1
MOVN,R0
RET
LP1:
INCR0
DJNZR1,LOOP
MOVN,#0
RET
31.试编写程序,求出内
RAM20单元中“T的个数,
并将结果存入21H单元。
解:
编程如下:
LOK1:
MOV21H,#O
MOVR2,#08H
MOVA,20H
LOP:
RLCA
JNCLP1
JNC21H
LP1:
DJNER2,LOP
RET
32.试编写统计数据区长度的程序,设数据区从内
RAM30开始,该数据区以0
结束,统计结果送入2FH中。
解:
编程如下:
ADUP:
MOV2FH,#0
MOVR0,#30H
ALOP:
MOVA,@R0
JNZLP1
RET
LP1:
INC2FH
INCR0
SJMPALOP
33.从内RAM30单元开始存
放着一组无符号数,其个数存在21H单元中。
试编写程序,找出其中最小的数,并将其存入20H单元中。
解:
编程如下:
SECH:
MOVRO,#3OH
MOV20H,#FFH
SLOP:
MOVA,@R0
CJNEA,20H,NEXT
NEXT:
JNCSLP1
MOV20H,A
SLP1:
INCR0
DJNZ21H,SLOP
RET
34.用程序实现c=a2+b2。
设a2b2存于内RAM,AA,BB单元;c为双字节,存于内RAMCCQ单元。
解:
该题可用于程序来实现。
通过两次调用查平方表子程序来得到a和b,并在
主程序中完成相加。
编程如
下:
AAEQU40H
BBEQU41H
CCEQU42H
DDEQU43H
FUNC:
MOVA,AA
LCALLDSQR
MOVDD,A
MOVCC,31H
MOVA,BB
LCALLDSQR
ADDA,DD
MOVDD,A
ADDCA,CC
MOVCC,A
RET
35.利用定时、计数器T1测量某正脉冲宽度,并存入内RAM31H30H。
设fosc=12MHz,脉冲从引脚输入,宽度小于65536us。
解:
编程如下:
PLUS:
MOVTMOD,#90H
MOVTH1,#0
MOVTL1,#0
JB,$
SETBTR1
JNB,$
JB,$
CLRTR1
MOV31H,THO
MOV30H,TLO
RET
36.设在内部RAM中50H开
始有连续的10个单元,求这10个单元之和,结果放
MOVA,61H;
MOVR0,A
(2
在60H,61H,低位放在60H高位在61H.
解:
程序编写如下:
ORG0000H
ACALLADDTEN
WAIT:
AJMPWAIT
ADDTEN:
MOVR0,50H
MOVR1,#10
MOVA,#00H
MOV60H,A
MOV61H,A
LOOP1:
ADDA,@R0
INCR0
MOV60H,A
JCLOOP2
DJNZR1,LOOP1
RET
LOOP2:
ADDA,#01H
DJNZR1,LOOP1
RET
END
1、请用数据传送指令来实现下列要求的数据传送。
(14分)
(1)把R0的内容送到R1
MOVA,R0
MOVR1,A
(2)内部RAM20单元的内
容传送到A中。
MOVA,20H
(3)外部RAM2000单元的
内容送到R0b
MOVDPTR,#2000H(1
分)
MOVXA,@DPTR1分)
分)
(4)外部ROM1000单元的内容送内部RAM20单元。
MOVDPTR#1000H
MOVA,#00H(2分)
MOVCA@A+DPTR
MOV20H,A(2分)
1.请将片外RAM20H-25H单元清零MOVR0,#20H
MOVR7#06H
CLRA
LOOPMOVX@R0,A
INCR0
DJNZR7,LOOP
2.请将ROM3000H单元内容送R7
RLCA(A)=
04H(CY)二1(P)=
MULAB(A)=
(B)=OOH(OV)=
SETBEA
1
08H
0
MOVDPTR#3000H
CLRA
MOVCA@A+DPTR
MOVR7A
1、设
(A)=38H,R0=28H,(28H)=18
H,执行下列程序后,(A)=
0E7H
ORLA,#27H
ANLA,28H
XCHDA@R0
CPLA
2、设(A)=38H,(20H)=49H,PSW=0
0H,(B)=02H,填写以下中间
结果。
SETBC
ADDCA,20H(A)=82H
(CY)二0(AC)二1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 考试 常见 试题 程序 分析