• 166.97 KB
  • 2022-04-22 11:32:30 发布

单片机原理及应用 (李建忠 著) 西安电子科技大学出版社 第三章 课后答案

  • 6页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'课后答案网:www.hackshp.cn课后答案网您最真诚的朋友www.hackshp.cn网团队竭诚为学生服务,免费提供各门课后答案,不用积分,甚至不用注册,旨在为广大学生提供自主学习的平台!课后答案网:www.hackshp.cn视频教程网:www.efanjy.comPPT课件网:www.ppthouse.com课后答案网www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cn 课后答案网:www.hackshp.cn习题三1.在MCS-51单片机中,寻址方式有几种?其中对片内RAM可以用哪几种寻址方式?对片外RAM可以用哪几种寻址方式?答:寻址方式可分为数的寻址和指令寻址,数的寻址有:常数寻址(立即寻址)、寄存器数寻址(寄存器寻址)、存储器数寻址(直接寻址方式、寄存器间接寻址方式、变址寻址方式)和位寻址,指令的寻址有绝对寻址和相对寻址。片内RAM寻址有:寄存器寻址、直接寻址方式和寄存器间接寻址方式。片外RAM寻址有:寄存器间接寻址方式。2.在对片外RAM单元寻址中,用Ri间接寻址与用DPTR间接寻址有什么区别?答:片外数据存储器寻址中,用Ri间接寻址只能访问低端的256字节单元,而用DPTR作指针间接访问可访问整个64K字节。3.在位处理中,位地址的表示方式有哪几种?答:1.直接位地址(00H~0FFH)。例如:20H2.字节地址带位号。例如:20H.3表示20H单元的3位。3.特殊功能寄存器名带位号。例如:P0.1表示P0口的1位。4.位符号地址。例如:TR0是定时/计数器T0的启动位。4.写出完成下列操作的指令。(1)R0的内容送到R1中。MOVA,R0MOVR1,A(2)片内RAM的20H单元内容送到片内RAM的40H单元中。MOV40H,20H(3)片内RAM的30H单元内容送到片外RAM的50H单元中。MOVA,30HMOVR0,#50HMOVX@R0,A(4)片内RAM的50H单元内容送到片外课后答案网RAM的3000H单元中。MOVA,50HMOVDPTR,#3000HMOVX@DPTR,Awww.hackshp.cn(5)片外RAM的2000H单元内容送到片内RAM的20H单元中。MOVDPTR,#2000HMOVXA,@DPTRMOV20H,A(6)片外RAM的1000H单元内容送到片外RAM的4000H单元中。MOVDPTR,#1000HMOVXA,@DPTRMOVDPTR,#4000HMOV@DPTR,A(7)ROM的1000H单元内容送到片内RAM的50H单元中。MOVA,#0MOVDPTR,#1000HMOVCA,@A+DPTR1若侵犯了您的版权利益,敬请来信告知!www.hackshp.cn 课后答案网:www.hackshp.cnMOV50H,A(8)ROM的1000H单元内容送到片外RAM的1000H单元中。MOVA,#0MOVDPTR,#1000HMOVCA,@A+DPTRMOVX@DPTR,A5.区分下列指令有什么不同?(1)MOVA,20H和MOVA,#20H答:前者源操作数是直接寻址,后者源操作数立即寻址。(2)MOVA,@R1和MOVXA,@R1答:前者源操作数是访问片内数据存储器,后者源操作数访问片外数据存储器低256字节。(3)MOVA,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中的内容。MOVR0,#20H;R0=20HMOVA,@R0;A=40HMOVR1,A;R1=40HMOVA,@R1;A=10HMOV@R0,P1;(40H)=0CAHMOVP2,P1;P2=0CAHMOV10H,A;(10H)=10HMOV20H,10H;(20H)=10H结果:(20H)=10H、(10H)=10H、(40H)=0CAH、P2=0CAH和P1=0CAH7.已知(A)=02H,(R1课后答案网)=7FH,(DPTR)=2FFCH,片内RAM(7FH)=70H,片外RAM(2FFEH)=11H,ROM(2FFEH)=64H,试分别写出以下各条指令执行后目标单元的内容。(1)MOVA,@R1结果:累加器www.hackshp.cnA等于70H(2)MOVX@DPTR,A结果:片外RAM(2FFCH)单元等于02H(3)MOVCA,@A+DPTR结果:累加器A等于64H(4)XCHDA,@R1结果:累加器A等于00H,片内RAM(7FH)单元等于72H8.已知:(A)=78H,(R1)=78H,(B)=04H,CY=1,片内RAM(78H)=0DDH,(80H)=6CH,试分别写出下列指令执行后目标单元的结果和相应标志位的值。(1)ADDA,@R1;累加器A等于55H,CY等于1(2)SUBBA,#77H;累加器A等于00H,CY等于0(3)MULAB;累加器A等于E0H,B寄存器等于01H,CY等于1,OV等于0(4)DIVAB;累加器A等于1EH,B寄存器等于00H,CY、OV等于0(5)ANL78H,#78H;片内RAM(78H)单元等于58H(6)ORLA,#0FH;累加器A等于7FH(7)XRL80H,A;片内RAM(80H)等于14H9.设(A)=83H,(R0)=17H,(17H)=34H,分析当执行完下面指令段后累加器A、R0、17H单元的内容。2若侵犯了您的版权利益,敬请来信告知!www.hackshp.cn 课后答案网:www.hackshp.cnANLA,#17H;A=03HORL17H,A;(17H)=37HXRLA,@R0;A=34HCPLA;A=CBH结果:A=CBH,(R0)=17H,(17H)=37H10.写出完成下列要求的指令。(1)累加器A的低2位清零,其余位不变。ANLA,#11111100B(2)累加器A的高2位置“1”,其余位不变。ORLA,#11000000B(3)累加器的高4位取反,其余位不变。XRLA,#11110000B(4)累加器第0位、2位、4位、6位取反,其余位不变。XRLA,#01010101B11.说明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的逻辑功能。程序:MOVC,P1.1ORLC,P1.2ANLC,P1.0ORLC,/P1.3MOVP1.4,C课后答案网14.下列程序段汇编后,从1000H单元开始的单元内容是什么?ORG1000Hwww.hackshp.cnTAB:DB12H,34HDS3DW5567H,87H答:(1000H)=12H,(1001H)=34H,(1002H)=00H,(1003H)=00,(1004H)=00,(1005H)=67H,(1006H)=55H,(1007H)=87H,(1008H)=00H15.试编一段程序,将片内RAM的20H、21H、22H单元的内容依次存入片外RAM的20H、21H、22H中。程序:MOVR0,#20HMOVR2,#03HLOOP:MOVA,@R0MOVX@R0,AINCR0DJNZR2,LOOP3若侵犯了您的版权利益,敬请来信告知!www.hackshp.cn 课后答案网:www.hackshp.cnSJMP$16.编程实现将片外RAM的2000H~2030H单元的内容,全部搬到片内RAM的20H单元开始位置,并将源位置清零。程序:MOVR0,#20HMOVDPTR,#2000HMOVR2,#31HLOOP:MOVXA,@DPTRMOV@R0,AMOVA,#00MOVX@DPTR,AINCDPTRINCR0DJNZR2,LOOPSJMP$17.编程将片外RAM的1000H单元开始的100个字节数据相加,结果放于R7R6中。程序:MOVDPTR,#1000HMOVR2,#100MOVR7,#00MOVR6,#00LOOP:MOVXA,@DPTRADDA,R6MOVR6,AMOVA,R7ADDCA,#0MOVR7,AINCDPTRDJNZR2,LOOPSJMP$课后答案网18.编程实现R4R3×R2,结果放于R7R6R5中。程序:www.hackshp.cnORG0100HMUL1:MOVA,R2MOVB,R3MULAB;R2×R3,结果的低字节直接存入积的R5MOVR5,A;结果的高字节存入R6中暂存起来MOVR6,BMUL2:MOVA,R2MOVB,R4MULAB;R2×R4,结果的低字节与R6相加后,再存入R6中ADDA,R6MOVR6,AMOVA,B;结果的高字节加上进位位后存入R7中ADDCA,#00MOVR7,A4若侵犯了您的版权利益,敬请来信告知!www.hackshp.cn 课后答案网:www.hackshp.cnSJMP$19.编程实现把片内RAM的20H单元的0位、1位,21H单元的2位、3位,22H单元的4位、5位,23H单元的6位、7位,按原位置关系拼装在一起放于R2中。程序:MOVC,20H.0MOVA.0,CMOVC,20H.1MOVA.1,CMOVC,21H.2MOVA.2,CMOVC,21H.3MOVA.3,CMOVC,22H.4MOVA.4,CMOVC,22H.5MOVA.5,CMOVC,23H.6MOVA.6,CMOVC,23H.7MOVA.7,CMOVR2,A20.用查表的方法实现一位十六进制数转换成ASCII。程序:(设一位十六进制数放在R2中,轮换的ASCII也放于R2中)C16STASC:MOVDPTR,#TABMOVA,R2MOVCA,@A+DPTRMOVR2,ARETTAB:DB30H,31H,32H,33H,34H,35H,36H,37HDB38H,391H课后答案网,41H,42H,43H,44H,45H,46H21.编程统计从片外RAM2000H开始的100个单元中“0”的个数放于R2中。程序:www.hackshp.cnMOVDPTR,#2000HMOVR3,#100MOVR2,#00LOOP:MOVXA,@DPTRJNZNEXTINCR2NEXT:INCDPTRDJNZR3,LOOPSJMP$5若侵犯了您的版权利益,敬请来信告知!www.hackshp.cn'