第四章余锡存习题与思考题参考答案.doc_第1页
第四章余锡存习题与思考题参考答案.doc_第2页
第四章余锡存习题与思考题参考答案.doc_第3页
第四章余锡存习题与思考题参考答案.doc_第4页
第四章余锡存习题与思考题参考答案.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

第四章 习题与思考题参考答案1、若有两个符号数X,Y分别存放在内部存储器50H、51H单元中,试编写一个程序实现X*10+Y,结果存入52H、53H中。 1 ORG00H 0000 7850 2MOVR0,#50H 0002 E6 3MOVA,R0 0003 75F00A 4MOVB,#0AH 0006 A4 5MULAB 0007 08 6INCR0 0008 26 7ADDA,R0 0009 08 8INCR0 000A A6F0 9MOVR0,B 000C 08 10INCR0 000D F6 11MOVR0,A 12END2、在以3000H为首地址的外部RAM中,存放了14个以ASCII码表示的09的数,试编写程序将它们转换成BCD码,并以压缩BCD形式存放在以2000H为首地址的外部RAM中。 1ORG00H 0000 903000 2MOVDPTR,#3000H;原始数据首地址 0003 7807 3MOVR0,#07;循环次数 0005 7930 4MOVR1,#30H;转换结果暂存区指针 0007 E0 5CH1:MOVXA,DPTR 0008 550F 6ANLA, #00001111B 000A C4 7SWAPA 000B F5F0 8MOVB,A 000D A3 9INCDPTR 000E E0 10MOVXA,DPTR 000F 550F 11ANLA, #00001111B 0011 45F0 12ORLA,B 0013 F7 13MOVR1,A 0014 09 14INCR1 0015 A3 15INCDPTR 0016 D8EF 16DJNZR0,CH1 0018 902000 17MOVDPTR,#2000H;转换结果存储区 001B 7A07 18MOVR2,#07H;结果个数 001D 7930 19MOVR1,#30H 001F E7 20CH2:MOVA,R1;3、采样的5个值分别存放在R0、R1、R2、R3、R4中,求出它们的中间值,并存放在R2中。 1ORG00H 0000 7805 2MOVR0,#5 0002 7906 3MOVR1,#6 0004 7A07 4MOVR2,#7 0006 7B08 5MOVR3,#8 0008 7C09 6MOVR4,#9 000A E4 7CLRA; 000B C3 8CLRC; 000C E8 9MOVA,R0; 000D 29 10ADDA,R1; 000E 2A 11ADDA,R2; 000F 2B 12ADDA,R3 0010 2C 13ADDA,R4 0011 75F005 14MOVB,#5 0014 84 15DIVAB 0015 FA 16MOVR2,A 0016 17END 18END4、以BUF1为起始地址的外部数据存储区中存放着16个单字节的无符号数,求其平均值并送入R2中。 1ORG00H 2BUF1EQU#1000H 0000 901000 3MOVDPTRBUF1 0003 AA00 4MOVR2,0 0005 7816 5MOVR0,#16H 0007 E0 6SUM:MOVXA,DPTR 0008 2A 7ADDA,R2 0009 FA 8MOVR2,A 000A A3 9INCDPTR 000B D8FA 10DJNZR0,SUM 000D 75F010 11MOVB,#10H 0010 84 12DIVAB 0011 FA 13MOVR2,A 14END5、试编写程序,将内部RAM单元中DATA1开始的20个单字节数依次与DATA2单元为起始地址的20个单字节数据进行交换。 1DATA1EQU#30H 2DATA2EQU#50H 3LENEQU#16 4ORG0H 0000 7830 5MOVR0,DATA1 0002 7950 6MOVR1,DATA2 0004 7A10 7MOVR2,LEN 0006 E6 8EXC:MOVA,R0 0007 C7 9XCHA,R1 0008 F6 10MOVR0,A 0009 08 11INCR0 000A 09 12INCR1 000B DAF9 13DJNZR2,EXC14 END6、某场歌手赛,共有10个评委,试编写一程序,输入10个评分,去掉最高分和最低分,求平均分(均为BCD码)。ORG0HNEQU#5BLOCKEQU#30HISELSORT:MOVR7,NDECR7MOVR1,BLOCKISST1:MOVR0,BLOCKMOVA,R7MOVR6,AMOVA,R0MOVB,AISST2:INCR1MOVA,R1CLRCSUBBA,BJCISST3MOVA,R1MOVR2,AMOVB,R1ISST3:DJNZR6,ISST2MOVA,BXCHA,R1MOVB,R2MOVR1,BMOVR1,ADJNZR7,ISST1MOVR0,BLOCKMOVR0,#0;去掉最低分MOVA,BLOCKADDA,#9MOVR0,AMOVR0,#0;去掉最高分AD:MOVR0,BLOCKINCROMOVR1,#8CLRACLRCMOVB,#0ADL:ADDA,R0DAAMOVR2,AADDCA,#0MOVB,AMOVA,R2DJNZR1,ADLMOVR5,0MOVR4,BMOVR3,AMOVR2,#0MOVR1,#8R5R4R3/R2R1=R4R3MOVR1,#00HMOVR2,#0FHMOVR3,#04HMOVR4,#05HMOVR5,#06HLCALL_DIVAJMP$_DIV:;CLRCMOV30H,#0MOV31H,#0MOV32H,#0_DIV_LOOP:CLRCMOVA,R3SUBBA,R1MOVR3,AMOVA,R4SUBBA,R2MOVR4,AMOVA,R5SUBBA,#0MOVR5,AJC_DIV_END_INC_SHANG:CLRCMOVA,30HADDCA,#1MOV30H,AMOVA,31HADDCA,#0MOV31H,AMOVA,32HADDCA,#0MOV32H,ALJMP_DIV_LOOP_DIV_END:CLRCMOVA,R1ADDCA,R3MOVA,R2ADDCA,R4MOVR3,30HMOVR4,31HEND7、编写将一个十六进制数转换为十进制数的子程序。 0000 78FE 2MOVR0,#FEH 0002 7930 3MOVR1,#30H 0004 E8 4HEXBCD:MOVA,R0 0005 75F064 5MOVB,#100 0008 84 6DIVAB 0009 F7 7MOVR1,A 000A 740A 8MOVA,#10 000C C5F0 9XCHA,B 000E 84 10DIVAB 000F 09 11INCR1 0010 F7 12MOVR1,A 0011 09 13INCR1 0012 A7F0 14MOVR1,B 15RET8、在内部RAM的BLOCK开始的单元中有一无符号数据块,数据长度为LEN。试编程求其中最大的数并存入MAX中。MCS51 1ORG0H 2LENEQU#10;数据块长度 3MAXEQU#40H 0000 7830 4MOVR0,#30H;BLOCK首地址 0002 790A 5MOVR1,LEN 0004 19 6DECR1;循环次数 0005 C3 7CLRC 0006 E6 8LOOP:MOVA,R0 0007 08 9INCR0 0008 96 10SUBBA,R0 0009 4002 11JCEXCHANG 000B 8002 12SJMPNEXT 000D 86F0 13EXCHANG:MOVB,R0 000F C3 14NEXT:CLRC 0010 D9F4 15DJNZR1,LOOP 0012 85F040 16MOV40H,B; MAX单元 17END9、试编程将内部RAM中41H43H单元中的数左移4位,移出部分送50H。 题意不清。10、在外部RAM中BLOCK开始的单元中有一数据块,数据长度为LEN,试编程统计其中的正数、负数和零的个数分别存入内部RAM的Pcount、Mcoun和Zcount单元。 MCS51 1ORG0H 2LENEQU#10;数据块长度 3PCOUNTEQU#30H 4MCOUNTEQU#31H 5ZCOUNTEQU#32H 6BLOCKEQU#40H 0000 7840 7MOVR0,BLOCK;BLOCK首地址 0002 790A 8MOVR1,LEN 0004 E6 9LOOP:MOVA,R0 0005 C3 10CLRC 0006 B40004 11CJNEA,#0H,SULT1 0009 0532 12INC32H 000B 8009 13SJMPSULT2 000D 33 14SULT1:RLCA; 移出符号位以判断正负! 000E 4004 15JCNEG 0010 0530 16INC30H 0012 8002 17SJMPSULT2 0014 0531 18NEG:INC31H 0016 08 19SULT2:INCR0 0017 D9EB 20DJNZR1,LOOP11、试编写一查表求平方的子程序SQR(设X在累加器A中,A小于15,平方数存入工作寄存器R7中)。0000 900008 2MOVDPTR,#TAB 0003 7830 3MOVR0,#30H 0005 E6 4MOVA,R0 0006 93 5MOVCA,A+DPTR 0007 FF 6MOVR7,A 0008 01010409 7TAB:DB1,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225 000C 10 19 24 31 0010 40 51 64 79 0014 90 A9 C4 E1 8END12、试编写一程序,将外部数据区DATA1单元开始的50个单节数逐一依次移动到内部RAM中DATA2单元开始的数据区中。 MCS51 1ORG0H 2DATA1

温馨提示

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

最新文档

评论

0/150

提交评论