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