东北电力大学单片机复习题_第1页
东北电力大学单片机复习题_第2页
东北电力大学单片机复习题_第3页
东北电力大学单片机复习题_第4页
东北电力大学单片机复习题_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、编写程序把内部RAM50H单元开始的16个字节数据传送到70H单元开始的内存区。要求程序的机器码从4000H单元开始存放。

ORG4000HMOVR0,#50HMOVR1,#70HMOVR7,#16LOOP:MOVA,@R0MOV@R1,AINCR1INCR0DJNER7,LOOPSJMP$END2、编写程序把内部RAM50H单元开始的16个字节的数据块向下移两个单元。

ORG0100HMOVR0,#5FHMOVR1,#61HMOVR7,#16LOOP:MOVA,@R0MOV@R1,ADECR1DECR0DJNER7,LOOPSJMP$END

3.内部RAM50H开始的10个ASCII表示的字符,编程把它们送到70H开始的RAM.要求传送时检查有无字符“$”(24H).若有换成空格(20H)

ORG0000HMOVR0,#50HMOVR1,#70HMOVR2,#10LOOP:MOVA,@R0CJNEA,#24H,LOOP1MOVA,#20HLOOP1:MOV@R1,AINCR0INCR1DJNZR2,LOOP

内部RAM50H开始有16个ASCII码表示的十进制数0-9用寄存器R2统计“0”的个数

ORG100HMOVR0,#50HMOVR1,#16MOVR2,#00HLOOP:MOVA,@R0CJNZA,#30H,NEXTINCR2NEXT:INCR0DJNZR1,LOOPEND

内部RAM50H开始有16个字节无符号数,找出其中最大值存入60H单元

ORG1000HMOVR0,#50HMOVR2,#16MOV60H,#00HLOOP:MOVA,@R0CJNEA,60H,NEXTSJMPNECHNEXT:JCNCEHMOV60H,ANECH:INCR0DJNZR2,LOOPSJMP$END编一多字节十进制加法,被加数从内部RAM40H开始,长度为8字节,40H为低位,加数从50H开始,长度为8字节,50H为低位,结果放回被加数位置MOVR0,#40HMOVR1,#50HMOVR2,#8CLRCBADD:MOVA,@R0ADDCA,@R1DAAMOV@R0,AINCR0INCR1DJNZR2,BADD设补码数X在内部RAM30H单元中; x x>0;Y= 20H X=0; X+5 X<0;Y放内部RAM40H单元中

ORG 1000H MOV A,30H JZ ZERO JNB ACC.7,PLUS ADD A,#5 MOV 40H,A SJMP END1 PLUS: MOV 40H,30H SJMP END1 ZERO: MOV 40H,#20H END1: SJMP $ END

数据块传送,内部RAM起始地址30H到外部RAM起始地址3000H,‘$’为结束字符;字符串最大长度为32个字节

ORG 1000H MOV R0,#30H MOV DPTR,#3000H MOV R7,#32LOOP:CJNE @R0,#'$',ISO SJMP END1ISO: MOV A,@R0 MOVX @DPTR,A INC R0 INC DPTR DJNZ R7,LOOPEND1: SJMP $ END无符号数排序程序。在片内RAM中起始地址为20H的20个单元中存放有无符号数。试对这些无符号数进行升序排序。方法:常用的方法是冒泡排序法。执行时从后向前进行相邻数的比较,如数据的大小次序与要求的顺序不符就将这两个数互换,否则不互换。对于升序排序,通过这种相邻数的互换,使小数向前移动,大数向后移动。从后向前进行一次冒泡,就会把最小的数换到最前。再进行一次冒泡就会把次小的数排在数第二的位置。

ORG1000HPAO:MOVR7,#19LOOP1:MOVA,R7 MOVR2,A MOVR0,#33HLOOP: MOVA,@R0 DECR0 MOV50H,@R0 CJNEA,50H,$+3

JNCNECH MOV@R0,A INCR0 MOV@R0,50H DECR0NECH:DJNZR2,LOOP DJNZR7,LOOP1 SJMP $ ENDR0:地址指针,R7:外循环计数器,R2:内循环计数器,50H:暂存单元.将1字节十六进制数转换成相应的ASCII码。设1位16进制数存放在R0中,转换后的ASCII码存放于R2中。实现程序如下:HASC: MOVA,R0;取4位二进制数

ANLA,#0FH;屏蔽掉高4位

CJNE A,#0AH,$+3 JC NEXTADDA,#07H;该数在A~F之间,加37HNEXT: ADDA,#30H;该数在0~9之间,加30H MOVR2,A;ASCII码存于R2 RET例将多位十六进制数转换成ASCII码。设地址指针R0指向十六进制数地址,R2中存放字数,R1指向要存放的ASCII码的地址。实现程序如下:HTASC: MOV A,@R0 ;取低4位二进制数

ANL A,#0FH MOV DPTR,#ASCTAB MOVCA,@A+DPTR;查表

MOV@R1,A ;存ASCII码

INCR1 MOVA,@R0 ;取十六进制高4位

SWAPA ANLA,#0FH MOVCA,@A+DPTR;查表

MOV@R1,A ;存ASCII INCR0 ;指向下一单元

INCR

温馨提示

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

评论

0/150

提交评论