ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:111.95KB ,
资源ID:4139217      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4139217.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机原理与运用 第三章答案.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机原理与运用 第三章答案.docx

1、单片机原理与运用 第三章答案50H=00H 51H=25H1.设内部RAM中59H单元的内容为50H,写出当执行下列程序段后寄存器 A, R0和内部RAM中50H,51H单元的内容为何值?MOVA, 59HMOVR0, AMOVA, #00HMOVR0, AMOVA, #25HMOV51H, AMOV52H, #70HMOVA, 59H; A=50HMOVR0, A; RO=50HMOVA, #00H; A=00HMOVR0, A; 50H=00HMOVA, #25H; A=25HMOV51H, A; 51H=25HMOV52H, #70H; 52H=70H解:所以:A=25H R0=50H2

2、.请选用合适的指令对P0 口内容做修改(例如使P0.0P0.3不变,P0.4P0.7为0)。MOVA, P0ANLA, 0fhMovP0, A解:3.试问外部数据存储器和程序存储器可以用哪些指令来实现?举例说明。DPTR, AMOVXDPTR, #0100HMOVDPTR, AA, DPTRMOVXDPTR, #0200HMOVA, DPTRA, RiMOVXA, R0Ri, AMOVXRI, A解:访问外部数据存储器指令有:MOVXMOVXMOVXMOVX访问程序存储器指令有:MOVX A, A+PCMOVX A, A+DPTR4.设堆栈指针SP中的内容为60H,内部RAM中30H和31H单

3、元的内容分别为24H和10H,执行下列程序段后,61H, 62H, 30H,31H,DPTR及SP中的内容 将有何变化?PUSH30HPUSH31HPOPDPLPOPDPHMOV30H,#00HMOV31H,#0FFH解:P USH30H;61H=24HPUSH31H;62=10HPOPDPL;DPL=10HPOPDPH;DPH=24HMOV30H,#00H;30H=00HMOV31H,#0FFH;31H=0FFHSP=62HSP=60H5.设(A)=40H,(R1)=23H (40H)=05H执行下列两条指令后,累加器 A和R1以XCHA,R1XCHDA,R1XCHA,R1; A=23HR1

4、=40HXCHDA,R1; A=25H40H=03H及内部RAM中40H单元的内容各位何值?解:6.两个四位BCD码数相加,被加数和加数分别存于50H,51H和52H,53H单元 中(次序为千位、百位在低地址中),和数存在54H,55H和56H中(56H用来存放最高位的进位,试编写加法程序)解: ORG0000HLJMPSTARTORG0100HSTART: MOVA, 53HADDA, 51HDAAMOV55H, AMOVA, 52HADDCA, 50HDAAMOV56H, CSJMP$END7.设(A) =01010101B, (R5) =10101010B,分别写出执行 ANL A, R

5、5; ORL A, R5:XRL A, R5 指令后结果。8.设指令SJMPrel=7EI并假设该指令存放在2114H和2115H单元中。当该指令执行后,程序将跳转到何地址? 解: 2116H+60H=2176H9.简述转移指令 AJMP addril, SJMPrel,LJMP addr16 及 JMP A+DRTF的应用 场合。解:AJMP addr11为2K字节范围内的无条件转跳指令,把程序的执行转移到指 定的地址。SJMP rel是无条件转跳指令,执行时在 PC加2后,把指令中补码形式的偏 移量加到PC上,并计算出转向目标地址。转向的目标地址可以在这条指令前 128 字节到后 127字

6、节之间LJMP addr16执行这条指令时把指令的第二字节和第三字节分别装入 PC的 高位和地位字节中无条件地转向指定地址。转移目标地址可以在64K程序存储器 地址空间的任何地方,不影响任何标志。JMP A+DRT脂令的功能是把累加器中8位无符号数与数据指针DRTR中的 16位数相加,将结果作为下条指令地址送入 PC,利用这条指令能实现程序的散 转。10.试分析下列程序段,当程序执行后,位地址00H, 01H中的内容将为何值? P1 口的 8 条 I/O 线为何状态?CLRCMOVA,#66HJCLOOP1CPLCSETB01HLOOP:ORLC,ACC.0JBACC.2,LOOP2CLR00

7、HLOOP2:MOVP1,A解:CLRC;CY=0MOVA,#66H;A=66HJCLOOP1CPLC;CY=1SETB01H;20H.1=1LOOP:ORLC,ACC.0;CY=1JBACC.2,LOOP2 ;CLR00HLOOP2:MOVP1,A ;P1=01100SJMP$20H.0=020H.1=1 P1=66H11.的特查指令表,写出下列两条指令的机器码,并比较一下机器码中操作数排 列次序点。MOV 78H,80HMOV 78H,#80H解:直接寻址单元传送到直接寻址单元的机器码是第二个操作数在前, 而立即数传送到直接地址单元是第一个操作数在前,次序正好相反。12.手工汇编下列程序段

8、AAAEQU851AHQQQMOVA,35HCLRCSUBBA,#0AHJCQQ16MOVA,36HSUBBA,#0AHJCQQ15AJMPAAAQQ15:MOV35H,#00HQQ16:JNB02H,QQ17MOVR6,39HDECR6SJMPQQ18QQ17:MOVR6,39HINC39HQQ18:CLR05HLJMP8500HEND13.若有两个无符号数序实现 x*10+y,x,y分别存放于内部存储器50H,51H单元中,试编写一个程 结果存入 52H, 53H 两个单元中。解: ORGSJMPORG0000HSTART0030HSTART: MOV1EH,#51H;正数存放首地址51H

9、存于1EH单元MOV1FH,#71H;负数存放首地址71H存于1EH单元MOVR0,#20H;建立取数(源操作数)的地址指针MOVR2,#30;预置数据长度MOV50H, #00H; 正数个数统计单元清零MOV70H,#00H;负数个数统计单元清零LOOP:MOVA,R0;取数JBACC.7,NEG;是负数转NEG处理POST:MOVR1,1EH;是正数,将暂存的地址送R1 (间址寄存器)MOVR1,A; 将正数入存INC50H;正数个数加 120H 单元开始,有 30 个数据。试编一个程序,把其中的正数,50H 和14 从内部存储器负数分别送51H和71H开始的存储单元,并分别记下正数负数的

10、个数送 70H 单元。INC1EH;正数暂存地址加 1 修正LOOP1: INCR0;取数地址加 1 修正DJNZR2,LOOP;计数长度减 1,不等于零,继续循环统计SJMP$;结束NEG: MOVR1,1FH;是负数,将暂存的地址送 R1 (间址寄存器)MOVR1,A; 将正数入存INC70H; 负数个数加 1INC1FH; 负数暂存地址加 1 修正SJMPLOOP1; 转取数地址修正15内部存储单元 奇检验。40H中有一个ASCI码字符,试编一程序,给该数的最高位加上解: ORG0000HSJMPSTARTORG0030HSTART: MOVA,40H;取数给 ACLRACC.7;A最高

11、位(奇偶校验位)清零JBP, LOOP;40H中的ASCII码原来就是奇数个1 (最高位给零)SETBACC.7;40H中的ACSI码原来是偶数个1,最高位置1LOOP: MOV40H,A; 入存SJMP$;结束END16.编写一段程序, 后送回原单元。将存放在自DATA单元开始的一个四字节数(高位在前)取补解:若DATA在内部数据存储器中(假如存放在 30H起始的4个单元中);采用求反加 1 的算法;ORG000HSJMPSTARTORG0030HSTART: SETBC;置进位位为 1MOVR2, #04H;预置计数长度MOVR0, #DATA1+3;取数指针指向低字节的地址LOOP: M

12、OVA, R0;取数CPLA;求反ADDCA, #00H;加进位MOVR0, A;入存DECR0;地址指针修正DJNZR2, LOOP;4字节未处理完,继续循环SJMP$;结束DATA1EQU 30H;END17.以BUF1为起始地址的外存储区中,存放有 16个单字节无符号二进制数,是 编一程序,求其平均值并送 BUF2单元。解:设R2、R3存放和,将其除以16(R2、R3联合左移4位)即为平均置值(单 字节存放)MOVR4, #10H;预置计数长度LOOP: MOVXA, DPTR;从外部数据存储器取数ADDA , R3MOVR3, AMOVA, R2;ADDCA, #00H;MOVR2,

13、A;累加INCDPTR;地址指针修正DJNZR4, LOOP;16 字节未累加完,继续循环累加MOVR4, #04H;R2、R3联合移位4次(除以16)LOOP1: CLRCMOVA, R2RRCAMOVR3, ADJNZR4, LOOP1;平均值存放于R3中SJMP$; 结束DATA1EQU 1000H;END18.在DATA1单元中有一个带符号8位二位进制数X。编一程序,按以下关系计算 y值,送DATA2单元。y =x+5, x0y=x,x=0y=x-5,x0,则 X=5,入存SJMPZERO;NEG:CLRC;SUBBA,#05H;ZERO:MOV31H,A; 结果入存SJMP$END1

14、9.设内部 RAM 中 30H 和 31H 单元中有两个带符号数,求出其中的大数存放在 32H 单元中。解:若两数同号,则值大的数大;两数异号,正数值大ORG000HSJMPSTARTORG0030HSTART: MOVA,30HXRLA,31H; 两数异或JBACC.7,YIHAO;两数异号TONGHAO: CLRC;两数同号MOVA,30HSUBBA,31HJCLOOP1-2LOOP0:MOVA,30H;同号被减数大,值大LOOED:MOV32H, ASJMP$LOOP1:MOVA,31H;异号被减数大,值小SJMPED;YIHAO:MOVA,30H;异号,哪个正,其值大JNBACC.7,

15、LOOP0SJMPLOOP1END20利用逻辑控制的方法,设计一个主程序,在第1 ,3, 5, 6次调出SB1子程序, 第2,4,7,8次调用SB2程序。解:ORG000HSJMPTESTORG0030HTEST:MOVR2, #08HMOVA, #1010LOOP:RLCAJCLOOP1LCALLSB1SJMPRELTLOOP1:LCALLSB2SJMPEND21将DATA单元存放的以ASCI码表示的16进制数转换成十进制数存放于 DATA+1 单元。解:先将DATA的 ASCI码转换成十六进制的数,再转换成十进制数。数字的ASCII 码转成十六进制数(即为十进制数)采用减 30H可采用对D

16、6的检测D6=1为字母的ASCI码,字母的ASCII码转成十六进制数采用减37H,十六进制再转十进制可采用先 减0AH,再加10H;这样-37H-0AH+10H=-31H可采用直接减31H。反之为数字的ASCII码。ORG000HSJMPTESTORG0030HTEST:MOVR0,#DATA1MOVA,R0;将DATA1的数给ACLRC;LOOP:JBACC.6,LOOP1;是字母,转 LOOP1SUBBA,#30H; 是数字减 30HED:MOVDATA+1,A;入存SJMP$;结束LOOP1:SUBBA,#31H; 是字母减 31HSJMPED;数字与字母的ASCI I的区别,DATA1

17、 EQU 30HEND22.编一个将十六进制数转换成十进制数的子程序。ORG000HSJMPTESTORG0030HTEST: MOVDPTR,#TAB ;建立表头地址MOVA,30HANLA,#0F0HSWAPA;高半字节分离ADDA,0E0H;高半字节数乘 2MOVB,A;暂存MOVCK n / /A,A+DPTR;怖 匚 砧 甘 aU r=tr 左MOVR3,A;取转换后的高半字节存INCDPTR;MOVA,B;MOVCA,A+DPTR;MOVR4,A;取转换后的低半字节存MOVA,30H;ANLA,#0FH;ADDA,R4;DAA;设转换后的数存放在R3 (高)、R3R4解:一个单字节

18、的十六进制数转成十进制数一般考虑用二字节 BCD 码来存放。R4 (低)中。RET;TAB:DB 00H,00H,00H,16H,00H,32H,00H,48H,00H,64HDB 00H,80H,00H,96H,01H,12H,01H,28H,01H,44HDB 01H,60H,01H,76H,01H,92H,02H,08H,02H,24HDB 02H,40H,02H,40H,02H,56HEND23.编一程序,将存储区DATA1单元开始的20个单字节数据依次与DATA2单元为 起始地址的 20 个单字节数据进行交换。解:设DATA1 DATA2分别为内部RAM30H和50H单元。ORG00

19、00HSJMPSTARTORG0030HSTART: MOVR0,#30H;建立源地址指针MOVR1,#50H;建立目标地址指针MOVR6,#20;置计数长度LOOP: MOVA,R0;取源地址数据XCHA,R1MOVR0,A;源地址数据与目标INCR0;源地址指针修正DJNZ R6,LOOP ;计数长度减 1,不等于 0 继续循环RETEND24 试编写一程序, 开始的存储区中。将存储区DATA1单元开始的50个单字节逐一移至解: START:MOVR0,#DATA1;建立源操作数地址指针MOVR1,#DATA2;建立目标操作数地址指针MOVR6,#50;置计数长度LOOP: MOVA,R0

20、MOVR0,AINCR0INCR1DJNZR6,LOOPRETENDDATA2单元25 试编写一采用查表法求 20,平方数高位存放在120的平方数子程序(要求:x在累加器A中,1W xR6,低位在R7)这样只要把数乘 就可以找到平方数的高字节存放的地址, 连续取两个字节即可解:为了方便起见, 每一数的平方在表中统一用双字节来存放, 以2加表头地址,DECRETTAB: DB00H,00H,00H,01H,00H,04H,00H,09H,00H,16平方数用 BCD表示(也可用 DB 00H,25H,00H,36H,00H,49H,00H,64H,00H,81 十六进制表示)DB 01H,00H

21、,01H,21H,01H,44H,01H,69H,01H,96HDB 02H,25H,02H,56H,02H,89H,03H,24H,03H,61H,04H,00HEND若平方表从0的平方存放,把程序中红色的DEC A指令去掉,若表从1的平方 存放,则将DEC A指令加上。26 试编写一个三字节无符号解:OGR0000HMOVR0,#5CHMUL1:MOVA,5AHMOVB58HMULABMOVR0,A数乘法程序。MOVR3,BMOVA,5BHMOVB,5BHMULABADDA,R3MOVR3,AMOVA,BADDA,R2MOVR2,AMOVR1,#AJNCLASTINCR1A,5BHMULA

22、BADDA,R2INCR0MOVR0,AMOVA,BADDCA,RIINCR0MOVR0,AMOVR5,#04HMOVR1,#10HLOOP: MOVA,R0MOVR1,AMOVB,29HLAST: MOVINCR0INCR1BINBCD: MOVR1,#48HMOVR2,#04HINCR2CLRABB0:MOVR1,AINCR1DJNZR2,BB0MOVA,#04HMOVB,#8MULABMOVR3,ABB3:MOVR0,#10HMOVR2,#04HCLRCBB1:MOVA,R0RLCAMOVR0,AINCR0DJNZR2,BB1MOVR2,#04HINCR2MOVR1,#48HBB2:MOVA,R1ADDCA,R1DAAMOVR1,AINC R1DJZN R2,BB2DJZN R3,BB3SJMP $

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

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