单片机原理和应用练习试题3答案_第1页
单片机原理和应用练习试题3答案_第2页
单片机原理和应用练习试题3答案_第3页
单片机原理和应用练习试题3答案_第4页
单片机原理和应用练习试题3答案_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

练习题3答案

i.简述以下根本概念:指令,指令系统,机器语言,汇编语言。

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

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

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

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

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

答:该单片机的指令由两局部组成,即操作码和操作数。操作码用来规定指令进展什么操作,

而操作数那么是指令操作的对象,操作数可能是一个具体的数据,也可能是指出到哪里取得

数据的地址或符号。指令格式一般为:

[标号:]操作码[操作数口[,操作数2][,操作数3][;注释]

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

答:共有7种寻址方式,见表3・2。

分别是:(1)存放器寻址:寻址范围为通用存放器组,共4组32个,但只能使用当前存放器

组,因此使用前需要通过对PSW种的RSI、RSO位的状态进展设置;(2)直接寻址:寻址范

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

寻址方式寻址存储器范围

立即寻址程序存储器ROM

直接寻址片内RAM低128B,特殊功能存放器

存放器寻址工作存放器R0~R7,A,C,DPTR,AB

存放器间接寻址片内RAM低128B,片外RAM

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

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

位寻址片内RAM的2DH〜2FH字节地址中所有的位,可位寻址的特殊功能存放器

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

寻址范围为内部RAM低128位,外部RAM64KB(低256单元可以使用DPTR和RO、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)=90Ho请分析下

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

答:

指令指令说明源操作数寻址方式结果

MOVA,40H将内部RAM中40H内容直接寻址(A)=48H

传送到累加器A中

(A)—(40H)

MOVRO,A再将A中内容传送给R0存放器寻址(R0)=48H

(R0)—(A)

MOVPl,将立即数OFOH送到Pl立即数寻址(P1)=OFOH

#0F0H口,即Pl.4〜Pl.7位1,其

余为0

(PI)-OFOH

MOV@R0,将30H中的内容,传放到直接寻址((R0))=(48H)=38H

30H以R0单元内容为地址的

单元中

((R0))一(30H)

MOVDPTR,将立即数3848传送给立即数寻址(DPTR)=3848H

#3848HDPTR数据指针

(dptr)-3848H

MOV40H,将内部RAM中38H内容直接寻址(40H)=40H

38H传送到40H单元中

(40H)—(38H)

MOVRO,将30H中的内容给R0存直接寻址(RO)=38H

30H放器

(RO)—(30H)

MOVPO,RO将R0的内容传送到P0存放器寻址(P0)=38H

(P0)一(R0)

MOVA,@R0将R0内容为地址的该单存放器间接寻址(A)=40H

元内容传送给A

(A)一((R0))

MOVP2,PI将Pl的内容传送给P2直接寻址(P2)=0F0H

(P2)—(Pl)

6.指出以下指令的源栗作数的寻址方式

MOVA,65H直接寻址

MOVA,#65H立即数寻址

MOVA,@R0存放器间接寻址

MOVA,R2存放器寻址

MOVCA,@A+PC变址寻址

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

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

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

8.:(A)=5BH,(RI)=30H,(30H)=OCEH,(Pl)=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不变

⑶MOVPl,RI(Pl)=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,Pl(A)=CDHP=l,C=0

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

(11)ANLP1,#OFH(Pl)=01HP和C不变

(12)CLRPSW.7C=0

(13)RLCA(A)=B7HP=0,c=o

(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,AF55I;(51H)-(A)

MOV52H,#00H755200;(52H)-00H

答:运行后存放器(A)二50H,(RO)二50H,(50H)二30H,⑸尸50H,(52H尸00H

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

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

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

MOVC,20H.0将内部RAM中20H单元内容的第。位(最低位)传送给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)将ROMIOOOH单元的内容送到内RAM3OH单元;

(8)使ACC.7置位;

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

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

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

(12)两立即数求和:1C0H+45H,结果按上下8位存在30H、31H中。

答案:⑴MOVRI,#30H(2)MOV78H,30H

(3)M0V@R0,#3011(4)M0VPl,R2

(5)MOVA,60H;;

MOVP2,#0;

MOVR0,#60H;

MOVX@RO,A

(6)MOVA,60H;;

MOVDPTR,#1060;

MOVX@DPTR,A

(7)MOVA,#O()H

MOVDPTR,#1000H

MOVCA,@A+DPTR

MOV30H,A

(8)SETBACC.7

(9)ANLA,#0F()H

(10)ANLC,pl.2

(11)与:MOVA,#45H

ANLA,#59H

或:MOVA,#45H

ORLA,#59H

异或:PMOVA,#45H

XRI.A,#59H

(12)CLRC

MOVR2,#l

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+l)=第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,#O5H

MOVDPL,A

MOVA,DPH

SUBBA,#00H

MOVDPh,A

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

XBIT30H

YBIT31H

ZBIT32H

MOVC,Y

ANLC,Z

MOV20H,C

MOVC,X

ORLC,20H

MOVY,C

14.将一个按上下字节存放在21H、20H中的一个双字节乘以2后,再按上下次序将结果存

放到22H、21H、20H单元

ORGO

STAR:CLRC

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

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

MOVA,20H

MOVB,#2H

MULAB

MOV20H,A

MOV23H,B

MOVA,2IH

MOVB,#2H

MULAB

ADDCA,23H

MOV21H,A

MOV22H,B

SJMP$

END

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

MOVP2,#10H

MOVRO,#00H

MOVA,#55H

MOVX@R0,A

MOVR0,#50H

LO:MOVX@R0,A

DJNZR0,L0

SJMP$

END

16.试编程统计数据区K度的程序,设数据区从片内RAM30H单元开场,该数据区以0完

毕,统计结果放入2FH中。

MOVR0,#30H

LO:MOVA,@R0

JZLI

INCRI

INCRO

SJMPLO

LI:MOV2FH,R1

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

ORGO

LO:MOVP2,#20H

MOVR0,#00H

MOVR7,#0FH

CLRFO

LOOP:MOVXA,@RO

MOV31H,A

INCRO

MOVXA,@R0

CLRC

CJNEA,31H,L1

LI:JCL2

DECRO

MOVX@R0,A

MOVA,31H

INCRO

MOVX@RO,A

SETBFO

L2:DJNZR7,L00P

JBFO,LO

SJMP$

END

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

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

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

DJNZR6,$;2个机器周期

DJNZR7,LP;2个机器周期

RET;2个机器周期

答:机器周期为2us,那么有:[1+(1+2X250+2)X246+21X2us=247482us

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

设晶振频率为I2M

20ms:

ORGO

MOVR1,#102

LI;MOVRO,#48

L2:NOP

NOP

DJNZR0,L2

NOP

DJNZRI,LI

NOP

NOP

NOP

NOP

NOP

NOP

NOP

END

Is;------------------------------------------------

ORGO

MOVR2,#50

L0:MOVR1,#1(X)

LI:MOVRO,#49

L2:NOP

NOP

DJNZR0,L2

NOP

DJNZRI,LI

DJNZR2,L0

SJMP$

END

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

ORGOH

MOVR2,#60

AO:LCALLDLY

DJNZR2,A0

SJMP$

DLY:MOVR2,#50

LO:MOVRI,#100

LI:MOVRO,#49

L2:NOP

NOP

DJNZR0,L2

NOP

DJNZRI,LI

DJNZR2,L0

RET

END

21.用查表程序求0-6之间的整数的立方。整数存在A中,查表结果存入片内RAM31H

中。

ORGO

MOVA,#DATA

MOVDPTR,#TAB

MOVCA,@A+DPTR

MOV30H,A

SJMP$

TAB:DB0J,8,27,64,125,216

END

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

ORG0000H

MOVA,#5

RLA

MOVRO,A

MOVDPTR,#TAB

MOVCA,@A+DPTR

MOV3IH.A;高位

MOVA,RO

INCA

MOVCA,@A+DPTR

MOV30H,A;低位

SJMP$

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

END

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

51H单元。

MOVR1,#OOH

MOVR0,#30H

MOVR2,#2IH

LO:MOVA,@RO

CJNEA,#OFFH,L1

INCRI

LI:INCRO

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

LCALLL0

MOVR3,A

MOVRI,Y

MOVR2,Z

LCALLLO

ADDA,R3

MOVF,A

Sjmp$

LO:MOVA,RI

ADDA,R2

MOVB,A

MULAB

RET

end

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

ORGOOOOh

SS:MOVR0,#61H

MOVR1,#70H

ACALLCRR

SWAPA

MOV@R1,A

DECRO

ACALLCRR

XCHDA,@R1

SJMP$

CRR:MOVA,@R0

CLRC

SUBBA,#30h

CJNEA,#OAH,NEQ

AJMPBIG

NEQ:JCCEN

BIG:SUBBA,#07H

CEN:RET

该程序的运行结果是:(60H)=33H,(61H)=43H,(70H)=C3H

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

序,求出这组无符号数中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论