单片机第4章作业_第1页
单片机第4章作业_第2页
单片机第4章作业_第3页
单片机第4章作业_第4页
单片机第4章作业_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

ORG0100HMAIN:MOVR2,#10HMOVR3,#20H MOV R6,#0FHMOVR7,#0FFHMOVDPL,#00HMOVDPH,R2LOP1:MOVXA,@DPTRMOV DPH,R3MOVX@DPTR,AINCDPTRMOVR3,DPHCLRCMOVA,R3SUBBA,#10H

4.15编程将外部RAM的1000H~1FFFH区域的数据送到2000H~2FFFH区域。

MOVR2,AMOVDPH,R2MOVA,R7JNZLOP2ORLA,R6JZENDPDECR6LOP2:DECR7SJMPLOP1ENDP:SJMP $ENDBLOCK1EQU30HBLOCK2EQU40HORG0000HLJMPSTARTSTART:MOVR0,#BLOCK1MOVR1,#BLOCK2MOVR7,#1LP:MOVR6,#5CLRCLP1:MOVA,@R0SUBBA,@R1MOV@R0,AINCR0INCR1DJNZR6,LP1DJNZR7,LPSJMP$

END4.16已知一内部RAM以BLOCK1和BLOCK2为起始地址的存储区中分别有5字节无符号被减数和减数(低位在前,高位在后。请编写减法子程序令它们相减,并把差放入以BLOCK1为起始地址的存储单元。THREEEQU1CHORG0000HLJMPSTARTSTART:MOVONE,#00HMOVTWO,#00HMOVTHREE,#00HMOVR0,#20HMOVR7,1FHLOOP3:MOVA,@R0INCR0JZLOOP1JBACC.7,LOOP2INCONESJMPHALTLOOP1:INCTWOLOOP2:INCTHREEHALT:DJNZR7,LOOP3

4.17从内部RAM20H单元开始存有一组带符号数,其个数已存放在1FH单元中。要求统计出大于0、等于0和小于0的数的数目,并把统计结果分别存放在ONE、TWO、THREE三个单元中。4.18设内部RAM30H单元有两个非零的BCD数,请编写求两个BCD数的积,并将积以压缩型BCD数形式送入31H单元的程序。ORG0000H

MOV A,30H ANL A,#0F0H SWAP A MOV B,A MOV A,30H ANL A,#0FH MUL A,B MOV B,#0AH DIV AB SWAPA ORL A,B MOV 31H,A SJMP $4.20编制绝对值函数程序。绝对值函数方程如下:假设X存于30H单元,Y存于40H单元。X及Y均为补码数.

XEQU30HYEQU40HORG0000HLJMPSTARTSTART:MOVA,XJZLOOPJNBACC.7,LOOPCPLAADDA,#01HLOOP:MOVY,ASJMP$

END4.21试编写统计数据区长度的程序,设数据区从内RAM30H开始,该数据区以0结束,统计结果送人2FH中。且数据区结束字符,也计入统计数据区的长度中去.

ORG0000HLJMPSTARTSTART:MOVR0,#30HMOVR7,#00HLOOP:MOVA,@R0INCR0INCR7CJNEA,#00H,LOOPMOV2FH,R7SJMP$4.23巳知R7中为2位十六进制数,试编程将其转换为ASCII码,存人内部RAM31H、32H中(低字节在前)。英文字母为大写.

ORG0000HLJMPSTARTSTART:MOVSP,#60HMOVA,R7LCALLBCDASCIIMOV31H,AMOVA,R7SWAPALCALLBCDASCIIMOV32H,ABCDASCII:ANLA,#0FHCJNEA,#10H,LOOPLOOP:JCAD30HADDA,#07HAD30H:ADDA,#30HRET

ENDORG0000HLJMPSTARTSTART:MOVDPTR,#TABMOVA,R7ANLA,#0FHMOVCA,@A+DPTRMOV31H,AMOVA,R7ANLA,#0F0HSWAPAMOVCA,@A+DPTRMOV32H,ASJMP$TAB:DB30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,41H,42H,43H,44H,45H,46H

END4.24设在MA和MB单元中有两个补码形式的8位二进制带符号数。请编写求两数之和并把它放在SUML和SUMH单元(低8位在SUML单元)的子程序。提示:在两个8位二进制带符号数相加时,其和很可能会超过8位数所能表示的范围,从而需要采用16位数形式来表示。因此,在进行加法时、可以预先把这两个加数扩张成16位二进制补码形式,然后对它完成双字节相加。

ORG0000HLJMPSTARTSTART:MOVA,MAJBACC.7,LLAMOVR7,#00HSJMPLLLLLA:MOVR7,#0FFHLLL:MOVA,MBJBACC.7,LLBMOVR6,#00HSJMPLADDLLB:MOVR6,#0FFHLADD:MOVA,MAADDA,MBMOVSUML,AMOVA,R6ADDCA,R7MOVSUMH,ASJMP$

4.25设外部RAM1000H~10FFH数据区中的数均为无符号数。试编写程序,找出该区域中的数的最大值,并放人内部RAM30H单元中。方法1:

ORG0000HLJMPSTARTSTART:MOVDPTR,#1000HMOVR7,#0FFHMOVXA,@DPTRMOVB,ALOOP:INCDPTRMOVXA,@DPTRCJNEA,B,LOOP1LOOP1:JNCLOOP2MOVA,BLOOP2:DJNZR7,LOOPMOV30H,ASJMP$

4.25设外部RAM1000H~10FFH数据区中的数均为无符号数。试编写程序,找出该区域中的数的最大值,并放人内部RAM30H单元中。方法2:MOV OPTR,#1000H MOV R7,#00H ;计数器

MOV B,#00H ;放中间结果L1: MOVX A,@DPTR CJNE A,B,L2L2: JC L3 MOV B,A ;B中放大值L3: INC DPTR DJNZ R7,L1 MOV 30H,A SJMP $4.28已知a、b、c均为0~9的整数,试编程求解表达式的值(要求使用子程序)。

AA EQU 31H BB EQU 32H CC EQU 33H Y EQU 34H ORG 0100H MOV SP,#60H MOV A,AA CLR C SUBB A,BB ACALL CHUCI MOV R6,A;……………. MOV A,BB CLR C SUBB A,CC ACALL CHUCI ADD A,R6 MOV R6,A;……………….

MOV A,CC CLR C SUBB A,AA ACALL CHUCI ADD A,R6 MOV R6,A MOV Y,R6 SJMP $;’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’;入口:项内差在A中.;出口:平方值在A中CHUCI: JNB ACC.7,SQR CPL A;差为负则先求其相反数

ADD A,#01HSQR: ADD A,#01H MOVC A,@A+PC RETSQRTAB:DB0,1,4,9,16,25,36,49,64,81AAEQU31HBBEQU32HCCEQU33HYEQU34HORG0000HLJMPSTARTSTART:MOVSP,#60HMOVA,AACLRCSUBBA,BBACALLCHUNCIMOVR6,AMOVA,BBCLRCSUBBA,CCACALLCHUNCIADDA,R6MOVR6,A

温馨提示

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

评论

0/150

提交评论