单片机原理和应用练习试题3答案解析Word文档格式.docx

上传人:b****6 文档编号:21880545 上传时间:2023-02-01 格式:DOCX 页数:16 大小:21.47KB
下载 相关 举报
单片机原理和应用练习试题3答案解析Word文档格式.docx_第1页
第1页 / 共16页
单片机原理和应用练习试题3答案解析Word文档格式.docx_第2页
第2页 / 共16页
单片机原理和应用练习试题3答案解析Word文档格式.docx_第3页
第3页 / 共16页
单片机原理和应用练习试题3答案解析Word文档格式.docx_第4页
第4页 / 共16页
单片机原理和应用练习试题3答案解析Word文档格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

单片机原理和应用练习试题3答案解析Word文档格式.docx

《单片机原理和应用练习试题3答案解析Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机原理和应用练习试题3答案解析Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。

单片机原理和应用练习试题3答案解析Word文档格式.docx

以PC的内容为基值,加上指令机器代码中‘相对地址’形成新的PC值转移;

(7)位寻址:

寻址空间包括内部RAM位寻址区(20~2FH)和专用寄存器的可寻址位。

4.要访问片外程序存储器和片外数据存储器,应采用哪些寻址方式?

访问片外程序存储器采用变址寻址方式,片外数据存储器采用寄存器间接寻址方式,且用DPTR可以访问64KB,而用R0或者R1只可访问低256字节。

5.在AT89S51片内RAM中,已知(30H)=38H,(38H)=40H,(40H)=48H,(48H)=90H。

请分析下面各是什么指令,说明源操作数的寻址方式及按顺序执行每条指令后的结果。

 

指令

指令说明

源操作数寻址方式

结果

MOVA,40H

将内部RAM中40H内容传送到累加器A中

(A)←(40H)

(A)=48H

MOVR0,A

再将A中内容传送给R0

(R0)←(A)

(R0)=48H

MOVP1,#0F0H

将立即数0F0H送到P1口,即P1.4~P1.7位1,其余为0

(P1)←0F0H

立即数寻址

(P1)=0F0H

MOV@R0,30H

将30H中的内容,传放到以R0单元内容为地址的单元中

((R0))←(30H)

((R0))=(48H)=38H

MOVDPTR,#3848H

将立即数3848传送给DPTR数据指针

(dptr)←3848H

(DPTR)=3848H

MOV40H,38H

将内部RAM中38H内容传送到40H单元中

(40H)←(38H)

(40H)=40H

MOVR0,30H

将30H中的内容给R0寄存器

(R0)←(30H)

(R0)=38H

MOVP0,R0

将R0的内容传送到P0

(P0)←(R0)

(P0)=38H

MOVA,@R0

将R0内容为地址的该单元内容传送给A

(A)←((R0))

(A)=40H

MOVP2,P1

将P1的内容传送给P2

(P2)←(P1)

(P2)=0F0H

6.指出下列指令的源操作数的寻址方式

MOVA,65H直接寻址

MOVA,#65H立即数寻址

MOVA,@R0寄存器间接寻址

MOVA,R2寄存器寻址

MOVCA,@A+PC变址寻址

7.内部RAM和特殊功能寄存器各用什么寻址方式?

内部RAM有寄存器寻址方式、直接寻址方式和间接寻址方式;

特殊功能寄存器除A外只能进行直接寻址。

8.已知:

(A)=5BH,(R1)=30H,(30H)=0CEH,(P1)=71H,(PSW)=80H,(PC)=2000H,(205CH)=46H,(SP)=30H,(B)=78H。

分别求各条指令执行后的结果(要求进行二进制运算验证)及标志位Cy、P的影响。

(1)MOVA,@R1(A)=0CEHP=1,C不变

(2)MOV40H,30H(40H)=0CEHP和C不变

(3)MOVP1,R1(P1)=30HP和C不变

(4)MOVCA,@A+PC(A)=46HP=1,C不变

(5)PUSHB(31H)=78H,(SP)=31HP和C不变

(6)POPDPH(DPH)=0CEH,(SP)=29HP和C不变

(7)XCHDA,@R1(A)=05EH,(30H)=CBHP=1,C不变

(8)ADDA,30H(A)=29HP=1,C=1

(9)ADDCA,P1(A)=CDHP=1,C=0

(10)SUBBA,P1(A)=E9HP=1,C=1

(11)ANLP1,#0FH(P1)=01HP和C不变

(12)CLRPSW.7C=0

(13)RLCA(A)=B7HP=0,C=0

(14)ORLC,90HC=1,P不变

9.对下面一段程序加上机器码和注释,并说明程序运行后寄存器A、R0和内部RAM50H、51H、52H单元的内容。

MOV50H,#50H755050  ;

(50H)←50H

MOVA,50HE550   ;

(A)←(50H)

MOVR0,AF8    ;

(R0)←(A)

MOVA,#30H7430   ;

(A)←30H

MOV@R0,AF6    ;

((R0))←(A)

MOVA,#50H7450   ;

(A)←50H

MOV51H,AF551   ;

(51H)←(A)

MOV52H,#00H755200  ;

(52H)←00H

运行后寄存器(A)=50H,(R0)=50H,(50H)=30H,(51)=50H,(52H)=00H

10.区别下列各指令中20H的含义,在每条指令后加上注释。

MOVA,#20H将20H立即数传送给A

MOV45H,20H将内部RAM中20H单元的内容传送到45H中

MOVC,20H.0将内部RAM中20H单元内容的第0位(最低位)传送给C

MOVC,20H将内部RAM中20H位地址内容传送给C

11.写出完成以下功能的指令

(1)将立即数30H送到R1;

(2)将内RAM30H中的数据送到内RAM78H单元;

(3)将立即数30H送到 以R0中内容为地址的存储器中;

(4)将R2中的内容送到 P1;

(5)将内RAM60H单元的数据送到 外RAM60H单元;

(6)将内RAM60H单元的数据送到外RAM1060H单元;

(7)将ROM1000H单元的内容送到内RAM30H单元;

(8)使ACC.7置位;

(9)使累加器的低4位清零;

(10)使P1.2与CY相与,结果送CY;

(11)立即数45H、93H进行逻辑与、或、异或操作;

(12)两立即数求和:

1C0H+45H,结果按高低8位存在30H、31H中。

答案:

(1)MOVR1,#30H

(2)MOV78H,30H

(3)MOV@R0,#30H(4)MOVP1,R2

(5)MOVA,60H;

;

movp2,#0;

movr0,#60h;

movx@r0,a

(6)MOVA,60H;

movdptr,#1060;

movx@dptr,a

(7)MOVA,#00H

MOVDPTR,#1000H

MOVCA,@A+DPTR

MOV30H,A

(8)SETBACC.7

(9)ANLA,#0F0H

(10)ANLC,p1.2

(11)与:

MOVA,#45H

ANLA,#59H

或:

ORLA,#59H

异或:

PMOVA,#45H

XRLA,#59H

(12)CLRC

MOVR2,#1

MOVA,#0C0H

ADDA,#45H

MOV31H,A

MOVA,R2

ADDCA,#0

MOV30H,A

12.写出下列指令执行过程中堆栈的变化

设堆栈初值为X:

MOVR6,#11H(SP)=X(堆栈不变)

MOVR7,#23H(SP)=X(堆栈不变)

ACALL200H(SP)=X+2

(X+1)=第4条指令的首址PC低8位(X+2)=第4条指令的首址PC高8位

POP50H(SP)=X-1

POP51H(SP)=X-2

SJMP$

ORG200H

RET

执行过程中,前面两条为立即寻址指令,堆栈不变;

执行第三条ACALL指令时,首先将程序寄存器PC的当前值加2,接着先后将PC的低八位和高八位分别进栈,(SP)=(SP)+2;

然后再将PC内容中的低11位用200H来替代,同时程序跳到第七条ORG200H中,接着RET表示子程序返回,将原先压入堆栈的PC值弹出,(SP)=(SP)-2;

最后两条POP指令执行后将SP所指地址中的内容赋给50H,SP减1后再将SP所指地址中的内容赋给51H,SP内容再减1给SP,最后程序结束。

13.请写出能实现下列功能的程序段:

(1)一个16位数据,高低字节分别放在20H和21H中,试将该数乘以2

MOVA,21H

CLRC

RRCA

MOV21H,A

MOVA,20H

RRCA

MOV20H,A

(2)16位二进制数由高位到低位放在30H和31H单元,将其内容加1;

MOVA,31H

ADDA,#01H

MOV31H,A

MOVA,30H

ADDCA,#00H

MOV30H,A

(3)将DPTR中的数据减5;

CLRC

MOVA,DPL

SUBBA,#05H

MOVDPL,A

MOVA,DPH

SUBBA,#00H

MOVDPh,A

(4)有3个位变量X,Y,Z,请编写程序实现Y=X+YZ的逻辑关系式。

XBIT30H

YBIT31H

ZBIT32H

MOVC,Y

ANLC,Z

MOV20H,C

MOVC,X

ORLC,20H

MOVY,C

14.将一个按高低字节存放在21H、20H中的一个双字节乘以2后,再按高低次序将结果存放到22H、21H、20H单元

ORG0

STAR:

MOV20H,#0E2H;

设低字节的数据是E2H

MOV21H,#0F3H;

设高字节的数据是F3H

MOVB,#2H

MULAB

MOV20H,A

MOV23H,B

MOVA,21H

ADDCA,23H

MOV21H,A

MOV22H,B

SJMP$

END

15.试编程,将片外RAM1000H~1050H单元的内容置为55H。

MOVP2,#10H

MOVR0,#00H

MOVA,#55H

MOVX@R0,A

MOVR0,#50H

L0:

MOVX@R0,A

DJNZR0,L0

16.试编程统计数据区长度的程序,设数据区从片内RAM30H单元开始,该数据区以0结束,统计结果放入2FH中。

MOVR0,#30H

MOVA,@R0

JZL1

INCR1

INCR0

SJMPL0

L1:

MOV2FH,R1

17.试编写程序,将片外RAM2000H~200FH数据区中的数据由大到小排列起来。

MOVP2,#20H

MOVR0,#00H

MOVR7,#0FH

CLRF0

LOOP:

MOVXA,@R0

MOV31H,A

CJNEA,31H,L1

L1:

JCL2

DECR0

MOVA,31H

SETBF0

L2:

DJNZR7,LOOP

JBF0,L0

END

18.若晶振频率位6MHZ,试计算下面延时子程序的延时时间

DELAY:

MOVR7,#0F6H;

1个机器周期

LP:

MOVR6,#0FAH;

DJNZR6,$;

2个机器周期

DJNZR7,LP;

RET;

机器周期为2us,则有:

[1+(1+2×

250+2)×

246+2]×

2us=247482us

19.试分别编写延时20ms和1s的程序

设晶振频率为12M

20ms:

MOVR1,#102

MOVR0,#48

NOP

DJNZR0,L2

NOP

DJNZR1,L1

NOP

1s:

----------------------------------------------

MOVR2,#50

MOVR1,#100

MOVR0,#49

DJNZR2,L0

20.试编写利用调用子程序的方法延时1min的程序。

ORG0H

MOVR2,#60

A0:

LCALLDLY

DJNZR2,A0

DLY:

MOVR1,#100

MOVR0,#49

NOP

DJNZR0,L2

NOP

DJNZR1,L1

RET

21.用查表程序求0~6之间的整数的立方。

已知整数存在A中,查表结果存入片内RAM31H中。

MOVA,#DATA

MOVDPTR,#TAB

MOVCA,@A+DPTR

MOV30H,A

TAB:

DB0,1,8,27,64,125,216

若立方数超过一个字节,在两个字节以内,由以下程序实现。

ORG0000H

MOVA,#5

RLA

MOVR0,A

MOV31H,A;

高位

MOVA,R0

INCA

MOVCA,@A+DPTR

MOV30H,A;

低位

DW0,1,8,27,64,125,216

22.编写程序,查找在内部RAM的30H~50H单元中出现FFH的次数,并将查找结果存入51H单元。

MOVR1,#00H

MOVR2,#21H

CJNEA,#0FFH,L1

INCR1

DJNZR2,L0

MOV51H,R1

23.试用子程序求多项式:

Y=(A+B)2+(B+C)2(要求:

两数之和不能超过16)

XEQU30H;

X代表A

YEQU31H;

Y代表B

ZEQU32H;

Z代表C

FEQU33H;

F中存放计算结果Y

MOVR1,X

MOVR2,Y

LCALLL0

MOVR3,A

MOVR1,Y

MOVR2,Z

ADDA,R3

MOVF,A

Sjmp$

MOVA,R1

ADDA,R2

MOVB,A

MULAB

end

24.已知(60H)=33H,(61H)=43H,试写出程序的功能和运行结果。

ORG0000h

SS:

MOVR0,#61H

MOVR1,#70H

ACALLCRR

SWAPA

MOV@R1,A

XCHDA,@R1

CRR:

SUBBA,#30h

CJNEA,#0AH,NEQ

AJMPBIG

NEQ:

JCCEN

BIG:

SUBBA,#07H

CEN:

该程序的运行结果是:

(60H)=33H,(61H)=43H,(70H)=C3H

25.内部RAM的30H单元开始存放着一组无符号数,其数目存放在21H单元中。

试编写程序,求出这组无符号数中的最小的数,并将其存入20H单元中。

MOVA,@R0

DEC21H

CJNEA,20H,L1

JNCL2

MOV20H,A

DJNZ21H,LOOP

26.写程序实现散转功能:

(R2)=0转向RR0

(R2)=1转向RR1

(R2)=2转向RR2

MOVR2,#2H;

设(R2)=2

JMP@A+DPTR

DBRR0-TAB

DBRR1-TAB

DBRR2-TAB

RR0:

MOVA,#1;

RR0:

将立即数1赋给A

SJMPENDF

RR1:

MOVA,#2;

RR1:

将立即数2赋给A

RR2:

MOVA,#3;

RR2:

将立即数3赋给A

ENDF:

27.试按子程序形式编程,将单字节二进制数高4位、低4位分别转换成两个字节的ASCII码。

MOVA,R0;

将R0中的内容作为贝转换对象

ANLA,#0FH;

取低四位

MOV20H,A;

低四位转换后存放于20H中

ANLA,#0F0H;

取高四位

SWAPA

MOV21H,A;

高四位转换后存放于21H中

DB30H,31H,32H,33H,34H,35H,36H,37H,38H,39H

DB41H,42H,43H,44H,45H,46H

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1