单片机原理与应用练习题3答案.docx

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

单片机原理与应用练习题3答案.docx

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

单片机原理与应用练习题3答案.docx

单片机原理与应用练习题3答案

练习题3答案

1.简述下列基本概念:

指令,指令系统,机器语言,汇编语言。

答:

指令是单片机CPU执行某种操作的命令。

指令系统是一台计算机所能执行的指令集合。

机器语言即二进制代码语言,是计算机可以直接识别。

汇编语言是用助记符、字符串和数字等来表示指令的程序语。

2.简述AT89S51单片机的指令格式

答:

该单片机的指令由两部分组成,即操作码和操作数。

操作码用来规定指令进行什么操作,而操作数则是指令操作的对象,操作数可能是一个具体的数据,也可能是指出到哪里取得数据的地址或符号。

指令格式一般为:

[标号:

]操作码[操作数1][,操作数2][,操作数3][;注释]

3.简述AT89S51的寻址方式和所能涉及的寻址空间

表3-2寻址方式及相应的寻址存储器范围

寻址方式

寻址存储器范围

立即寻址

程序存储器ROM

直接寻址

片内RAM低128B,特殊功能寄存器

寄存器寻址

工作寄存器R0~R7,A,C,DPTR,AB

寄存器间接寻址

片内RAM低128B,片外RAM

变址寻址

程序存储器ROM(@A+DPTR,@A+PC)

相对寻址

程序存储器ROM(相对寻址指令的下一指令PC值加-128~+127)

位寻址

片内RAM的20H~2FH字节地址中所有的位,可位寻址的特殊功能寄存器

答:

共有7种寻址方式,见表3-2。

分别是:

(1)寄存器寻址:

寻址围为通用寄存器组,共4组32个,但只能使用当前寄存器组,因此使用前需要通过对PSW种的RS1、RS0位的状态进行设置;

(2)直接寻址:

寻址围为部RAM,包括低128位用户RAM区和高128位专用寄存器;(3)寄存器间接寻址:

寻址围为部RAM低128位,外部RAM64KB(低256单元可以使用DPTR和R0、R1作为间接寻址寄存器,而其他单元只能用DPTR作为间接寻址寄存器);(4)立即寻址:

直接给出立即数,不涉及寻址空间;(5)变址寻址:

只对程序寄存器进行寻址;(6)相对寻址:

以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

MOVR0,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

MOVR0,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)MOVR0,#30H(4)MOVP1,R2

(5)MOVA,60H;;

movp2,#0;

movr0,#60h;

movxr0,a

(6)MOVA,60H;;

movdptr,#1060;

movxdptr,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

或:

MOVA,#45H

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:

CLRC

MOV20H,#0E2H;设低字节的数据是E2H

MOV21H,#0F3H;设高字节的数据是F3H

MOVA,20H

MOVB,#2H

MULAB

MOV20H,A

MOV23H,B

MOVA,21H

MOVB,#2H

MULAB

ADDCA,23H

MOV21H,A

MOV22H,B

SJMP$

END

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

MOVP2,#10H

MOVR0,#00H

MOVA,#55H

MOVXR0,A

MOVR0,#50H

L0:

MOVXR0,A

DJNZR0,L0

SJMP$

END

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

MOVR0,#30H

L0:

MOVA,R0

JZL1

INCR1

INCR0

SJMPL0

L1:

MOV2FH,R1

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

ORG0

L0:

MOVP2,#20H

MOVR0,#00H

MOVR7,#0FH

CLRF0

LOOP:

MOVXA,R0

MOV31H,A

INCR0

MOVXA,R0

CLRC

CJNEA,31H,L1

L1:

JCL2

DECR0

MOVXR0,A

MOVA,31H

INCR0

MOVXR0,A

SETBF0

L2:

DJNZR7,LOOP

JBF0,L0

SJMP$

END

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

DELAY:

MOVR7,#0F6H;1个机器周期

LP:

MOVR6,#0FAH;1个机器周期

DJNZR6,$;2个机器周期

DJNZR7,LP;2个机器周期

RET;2个机器周期

答:

机器周期为2us,则有:

[1+(1+2×250+2)×246+2]×2us=247482us

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

设晶振频率为12M

20ms:

ORG0

MOVR1,#102

L1:

MOVR0,#48

L2:

NOP

NOP

DJNZR0,L2

NOP

DJNZR1,L1

NOP

NOP

NOP

NOP

NOP

NOP

NOP

END

1s:

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

ORG0

MOVR2,#50

L0:

MOVR1,#100

L1:

MOVR0,#49

L2:

NOP

NOP

DJNZR0,L2

NOP

DJNZR1,L1

DJNZR2,L0

SJMP$

END

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

ORG0H

MOVR2,#60

A0:

LCALLDLY

DJNZR2,A0

SJMP$

DLY:

MOVR2,#50

L0:

MOVR1,#100

L1:

MOVR0,#49

L2:

NOP

NOP

DJNZR0,L2

NOP

DJNZR1,L1

DJNZR2,L0

RET

END

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

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

ORG0

MOVA,#DATA

MOVDPTR,#TAB

MOVCA,A+DPTR

MOV30H,A

SJMP$

TAB:

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

END

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

ORG0000H

MOVA,#5

RLA

MOVR0,A

MOVDPTR,#TAB

MOVCA,A+DPTR

MOV31H,A;高位

MOVA,R0

INCA

MOVCA,A+DPTR

MOV30H,A;低位

SJMP$

TAB:

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

END

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

MOVR1,#00H

MOVR0,#30H

MOVR2,#21H

L0:

MOVA,R0

CJNEA,#0FFH,L1

INCR1

L1:

INCR0

DJNZR2,L0

MOV51H,R1

SJMP$

END

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

LCALLL0

ADDA,R3

MOVF,A

Sjmp$

L0:

MOVA,R1

ADDA,R2

MOVB,A

MULAB

RET

end

 

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

ORG0000h

SS:

MOVR0,#61H

MOVR1,#70H

ACALLCRR

SWAPA

MOVR1,A

DECR0

ACALLCRR

XCHDA,R1

SJMP$

CRR:

MOVA,R0

CLRC

SUBBA,#30h

CJNEA,#0AH,NEQ

AJMPBIG

NEQ:

JCCEN

BIG:

SUBBA,#07H

CEN:

RET

该程序的运行结果是:

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

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

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

MOVR0,#30H

MOVA,R0

MOV20H,A

DEC21H

LOOP:

INCR0

MOVA,R0

CJNEA,20H,L1

L1:

JNCL2

MOV20H,A

L2:

DJNZ21H,LOOP

SJMP$

END

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

(R2)=0转向RR0

(R2)=1转向RR1

(R2)=2转向RR2

 

ORG0

MOVR2,#2H;设(R2)=2

MOVDPTR,#TAB

MOVA,R2

MOVCA,A+DPTR

JMPA+DPTR

TAB:

DBRR0-TAB

DBRR1-TAB

DBRR2-TAB

RR0:

MOVA,#1;RR0:

将立即数1赋给A

SJMPENDF

RR1:

MOVA,#2;RR1:

将立即数2赋给A

SJMPENDF

RR2:

MOVA,#3;RR2:

将立即数3赋给A

SJMPENDF

ENDF:

SJMP$

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

MOVA,R0;将R0中的容作为贝转换对象

ANLA,#0FH;取低四位

MOVDPTR,#TAB

MOVCA,A+DPTR

MOV20H,A;低四位转换后存放于20H中

MOVA,R0

ANLA,#0F0H;取高四位

SWAPA

MOVCA,A+DPTR

MOV21H,A;高四位转换后存放于21H中

TAB:

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

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

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

当前位置:首页 > 高等教育 > 工学

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

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