单片机原理与应用及C51程序设计杨加国主编完整版标准答案.docx

上传人:b****2 文档编号:2174990 上传时间:2022-10-27 格式:DOCX 页数:25 大小:447.79KB
下载 相关 举报
单片机原理与应用及C51程序设计杨加国主编完整版标准答案.docx_第1页
第1页 / 共25页
单片机原理与应用及C51程序设计杨加国主编完整版标准答案.docx_第2页
第2页 / 共25页
单片机原理与应用及C51程序设计杨加国主编完整版标准答案.docx_第3页
第3页 / 共25页
单片机原理与应用及C51程序设计杨加国主编完整版标准答案.docx_第4页
第4页 / 共25页
单片机原理与应用及C51程序设计杨加国主编完整版标准答案.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

单片机原理与应用及C51程序设计杨加国主编完整版标准答案.docx

《单片机原理与应用及C51程序设计杨加国主编完整版标准答案.docx》由会员分享,可在线阅读,更多相关《单片机原理与应用及C51程序设计杨加国主编完整版标准答案.docx(25页珍藏版)》请在冰豆网上搜索。

单片机原理与应用及C51程序设计杨加国主编完整版标准答案.docx

单片机原理与应用及C51程序设计杨加国主编完整版标准答案

单片机原理与应用及C51程序设计

第一章

第二章

第三章

1.在MCS-51单片机中,寻址方式有几种?

其中对片内RAM可以用哪几种寻址方式?

对片外RAM可以用哪几种寻址方式?

答:

寻址方式可分为数的寻址和指令寻址,数的寻址有:

常数寻址(立即寻址)、寄存器数寻址(寄存器寻址)、存储器数寻址(直接寻址方式、寄存器间接寻址方式、变址寻址方式)和位寻址,指令的寻址有绝对寻址和相对寻址。

片内RAM寻址有:

寄存器寻址、直接寻址方式和寄存器间接寻址方式。

片外RAM寻址有:

寄存器间接寻址方式。

2.在对片外RAM单元寻址中,用Ri间接寻址与用DPTR间接寻址有什么区别?

答:

片外数据存储器寻址中,用Ri间接寻址只能访问低端的256字节单元,而用DPTR作指针间接访问可访问整个64K字节。

3.在位处理中,位地址的表示方式有哪几种?

答:

1.直接位地址(00H~0FFH)。

例如:

20H

2.字节地址带位号。

例如:

20H.3表示20H单元的3位。

3.特殊功能寄存器名带位号。

例如:

P0.1表示P0口的1位。

4.位符号地址。

例如:

TR0是定时/计数器T0的启动位。

4.写出完成下列操作的指令。

(1)R0的内容送到R1中。

ﻩMOVA,R0

MOVR1,A

(2)片内RAM的20H单元内容送到片内RAM的40H单元中。

ﻩMOV 40H,20H

(3)片内RAM的30H单元内容送到片外RAM的50H单元中。

ﻩMOVA,30H

ﻩMOV R0,#50H

MOVX@R0,A

(4)片内RAM的50H单元内容送到片外RAM的3000H单元中。

MOVA,50H

ﻩMOV  DPTR,#3000H

ﻩMOVX@DPTR,A

(5)片外RAM的2000H单元内容送到片内RAM的20H单元中。

ﻩMOVDPTR,#2000H

MOVXA,@DPTR

MOV  20H,A

(6)片外RAM的1000H单元内容送到片外RAM的4000H单元中。

MOV DPTR,#1000H

MOVX A,@DPTR

MOVDPTR,#4000H

MOV@DPTR,A

(7)ROM的1000H单元内容送到片内RAM的50H单元中。

MOVA,#0

MOVDPTR,#1000H

MOVCA,@A+DPTR

MOV50H,A

(8)ROM的1000H单元内容送到片外RAM的1000H单元中。

ﻩMOV A,#0

ﻩMOVDPTR,#1000H

ﻩMOVCA,@A+DPTR

MOVX @DPTR,A

5.区分下列指令有什么不同?

(1)MOVA,20H和MOVA,#20H

ﻩ答:

前者源操作数是直接寻址,后者源操作数立即寻址。

(2)MOVA,@R1和MOVX  A,@R1

ﻩ答:

前者源操作数是访问片内数据存储器,后者源操作数访问片外数据存储器低256字节。

(3)MOV A,R1和MOVA,@R1

ﻩ答:

前者源操作数是寄存器寻址,后者源操作数寄存器间接寻址。

(4)MOVXA,@R1和MOVXA,@DPTR

ﻩ答:

前者源操作数是访问片外数据存储器低256字节,后者源操作数访问片外数据存储器整个64K字节。

(5)MOVXA,@DPTR和MOVCA,@A+DPTR

答:

前者源操作数是访问片外数据存储器,后者源操作数访问程序数据存储器。

6.设片内RAM的(20H)=40H,(40H)=10H,(10H)=50H,(P1)=0CAH。

分析下列指令执行后片内RAM的20H、40H、10H单元以及P1、P2中的内容。

MOV R0,#20Hﻩ;R0=20H

MOVA,@R0;A=40H

MOVR1,Aﻩ;R1=40H

MOVA,@R1 ;A=10H

MOV@R0,P1;(40H)=0CAH

MOV P2,P1ﻩ ;P2=0CAH

MOV10H,A;(10H)=10H

MOV 20H,10H;(20H)=10H

结果:

(20H)=10H、(10H)=10H、(40H)=0CAH、P2=0CAH和P1=0CAH

7.已知(A)=02H,(R1)=7FH,(DPTR)=2FFCH,片内RAM(7FH)=70H,片外RAM(2FFEH)=11H,ROM(2FFEH)=64H,试分别写出以下各条指令执行后目标单元的内容。

(1)MOV A,@R1ﻩ结果:

累加器A等于70H

(2)MOVX@DPTR,Aﻩﻩ结果:

片外RAM(2FFCH)单元等于02H

(3)MOVC A,@A+DPTR结果:

累加器A等于64H

(4)XCHD A,@R1ﻩ结果:

累加器A等于00H,片内RAM(7FH)单元等于72H

8.已知:

(A)=78H,(R1)=78H,(B)=04H,CY=1,片内RAM(78H)=0DDH,(80H)=6CH,试分别写出下列指令执行后目标单元的结果和相应标志位的值。

(1)ADDA,@R1ﻩ;累加器A等于55H,CY等于1

(2)SUBB A,#77Hﻩ;累加器A等于00H,CY等于0

(3)MULABﻩﻩ;累加器A等于E0H,B寄存器等于01H,CY等于1,OV等于0

(4)DIV ABﻩﻩ;累加器A等于1EH,B寄存器等于00H,CY、OV等于0

(5)ANL 78H,#78H;片内RAM(78H)单元等于58H

(6)ORL  A,#0FH;累加器A等于7FH

(7)XRL80H,A;片内RAM(80H)等于14H

9.设(A)=83H,(R0)=17H,(17H)=34H,分析当执行完下面指令段后累加器A、R0、17H单元的内容。

ANLA,#17Hﻩ;A=03H

ORL17H,Aﻩ;(17H)=37H

XRLA,@R0ﻩﻩ;A=34H

CPLAﻩ;A=CBH

结果:

A=CBH,(R0)=17H,(17H)=37H

10.写出完成下列要求的指令。

(1)累加器A的低2位清零,其余位不变。

ﻩANLA,#11111100B

(2)累加器A的高2位置“1”,其余位不变。

ORL A,#11000000B

(3)累加器的高4位取反,其余位不变。

XRLA,#11110000B

(4)累加器第0位、2位、4位、6位取反,其余位不变。

ﻩXRLA,#01010101B

11.说明LJMP指令与AJMP指令的区别?

答:

LJMP指令后面提供的是16位目标地址,所以可以转移到64KB程序存储器的任意位置,缺点是:

执行时间长,字节数多。

ﻩAJMP指令后带的是11位直接地址,执行时,先将程序指针PC的值加2(该指令长度为2字节),然后把指令中的11位地址addr11送给程序指针PC的低11位,而程序指针的高5位不变,只能在当前2K范围内转移。

12.设当前指令CJNEA,#12H,10H的地址是0FFEH,若累加器A的值为10H,则该指令执行后的PC值为多少?

若累加器A的值为12H呢?

ﻩ答:

指令执行后的PC值为1011H,若累加器A的值为12H,则指令执行后的PC值为1001H。

13.用位处理指令实现P1.4=P1.0∧(P1.1∨P1.2)∨/P1.3的逻辑功能。

ﻩ程序:

MOVﻩC,P1.1

ORLC,P1.2

ﻩANLC,P1.0

ORLC,/P1.3

MOVP1.4,C

14.下列程序段汇编后,从1000H单元开始的单元内容是什么?

ORG1000H

TAB:

 DB 12H,34H

DS3

DW5567H,87H

答:

(1000H)=12H,(1001H)=34H,(1002H)=00H,(1003H)=00,(1004H)=00,(1005H)=67H,(1006H)=55H,(1007H)=87H,(1008H)=00H

15.试编一段程序,将片内RAM的20H、21H、22H单元的内容依次存入片外RAM的20H、21H、22H中。

程序:

MOVﻩR0,#20H

MOVﻩR2,#03H

LOOP:

MOV A,@R0

ﻩMOVXﻩ@R0,A

INCﻩR0

DJNZR2,LOOP

ﻩSJMP$

16.编程实现将片外RAM的2000H~2030H单元的内容,全部搬到片内RAM的20H单元开始位置,并将源位置清零。

程序:

MOVR0,#20H

MOVﻩDPTR,#2000H

MOVﻩR2,#31H

LOOP:

ﻩMOVXA,@DPTR

MOV @R0,A

ﻩMOVA,#00

ﻩMOVX@DPTR,A

INCDPTR

INCﻩﻩR0

DJNZﻩR2,LOOP

SJMP$

17.编程将片外RAM的1000H单元开始的100个字节数据相加,结果放于R7R6中。

程序:

MOVﻩDPTR,#1000H

MOVﻩR2,#100

MOVﻩR7,#00

MOVR6,#00

LOOP:

ﻩMOVXﻩA,@DPTR

ADDA,R6

MOVR6,A

ﻩMOVﻩA,R7

ﻩADDCA,#0

MOVR7,A

ﻩINCﻩﻩDPTR

DJNZR2,LOOP

SJMP$

18.编程实现R4R3⨯R2,结果放于R7R6R5中。

程序:

ORG0100H

MUL1:

MOV A,R2

MOVB,R3

MUL AB     ;R2⨯R3,结果的低字节直接存入积的R5

MOV R5,A ;结果的高字节存入R6中暂存起来

MOVR6,B

MUL2:

MOV A,R2

MOV B,R4

MULAB  ;R2⨯R4,结果的低字节与R6相加后,再存入R6中

ADDA,R6

MOVR6,A

MOV A,B  ;结果的高字节加上进位位后存入R7中

ADDC A,#00

MOV R7,A

SJMP$

19.编程实现把片内RAM的20H单元的0位、1位,21H单元的2位、3位,22H单元的4位、5位,23H单元的6位、7位,按原位置关系拼装在一起放于R2中。

程序:

ﻩMOVC,20H.0

MOVﻩA.0,C

MOVC,20H.1

ﻩMOVﻩA.1,C

ﻩMOVC,21H.2

MOVﻩA.2,C

ﻩMOVC,21H.3

ﻩMOVA.3,C

MOVC,22H.4

ﻩMOVA.4,C

ﻩMOVﻩC,22H.5

MOVﻩA.5,C

ﻩMOVC,23H.6

MOVﻩA.6,C

MOVﻩC,23H.7

MOVﻩA.7,C

ﻩMOVﻩR2,A

20.用查表的方法实现一位十六进制数转换成ASCII。

ﻩ程序:

(设一位十六进制数放在R2中,轮换的ASCII也放于R2中)

ﻩC16STASC:

MOVDPTR,#TAB

MOVA,R2

ﻩMOVCA,@A+DPTR

ﻩMOVﻩR2,A

ﻩRET

ﻩTAB:

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

DB 38H,391H,41H,42H,43H,44H,45H,46H

21.编程统计从片外RAM2000H开始的100个单元中“0”的个数放于R2中。

程序:

MOVﻩDPTR,#2000H

MOVﻩR3,#100

MOVﻩR2,#00

LOOP:

ﻩMOVXA,@DPTR

ﻩJNZﻩﻩNEXT

ﻩINCﻩR2

NEXT:

INCﻩDPTR

ﻩDJNZﻩR3,LOOP

SJMP$

第四章

4-2有哪里些数据类型是MCS

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

当前位置:首页 > 求职职场 > 简历

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

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