云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 单片机原理与运用-第三章答案

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

  • 62 次阅读
  • 3 次下载
  • 2025/5/7 5:03:48

MOV 50H,#00H;正数个数统计单元清零 MOV 70H,#00H;负数个数统计单元清零 LOOP:MOVA,@R0 ;取数

JB ACC.7,NEG ;是负数转NEG处理

POST:MOV R1,1EH;是正数,将暂存的地址送R1(间址寄存器)

MOV @R1,A;将正数入存 INC50H;正数个数加1

INC 1EH;正数暂存地址加1修正

LOOP1:INCR0;取数地址加1修正

DJNZ R2,LOOP;计数长度减1,不等于零,继续循环统计 SJMP $;结束

NEG: MOVR1,1FH;是负数,将暂存的地址送R1(间址寄存器)

MOV @R1,A;将正数入存 INC 70H;负数个数加1

INC1FH;负数暂存地址加1修正 SJMP LOOP1;转取数地址修正

15内部存储单元40H中有一个ASCII码字符,试编一程序,给该数的最高位加上奇检验。

解:ORG 0000H SJMP START

ORG 0030H

START: MOV A,40H;取数给A

CLR ACC.7 ;A最高位(奇偶校验位)清零

JB P, LOOP ;40H中的ASCII码原来就是奇数个1(最高位给零) SETB ACC.7 ;40H中的ACSII码原来是偶数个1,最高位置1

LOOP:MOV 40H,A ;入存 SJMP $;结束 END

16.编写一段程序,将存放在自DATA单元开始的一个四字节数(高位在前)取补后送回原单元。

解:若DATA在内部数据存储器中(假如存放在30H起始的4个单元中);采用求反加1的算法;

ORG 000H SJMP START ORG 0030H

START: SETB C ;置进位位为1

MOV R2,#04H ;预置计数长度

MOV R0,#DATA1+3 ;取数指针指向低字节的地址 LOOP:MOV A,@R0 ;取数

CPL A ;求反

ADDC A,#00H ;加进位 MOV @R0,A ;入存

DEC R0 ;地址指针修正

DJNZ R2,LOOP ;4字节未处理完,继续循环处理 SJMP $;结束 DATA1 EQU 30H; END

17.以BUF1为起始地址的外存储区中,存放有16个单字节无符号二进制数,是编一程序,求其平均值并送BUF2单元。

解:设R2、R3存放和,将其除以16(R2、R3联合左移4位)即为平均置值(单字节存放)

ORG 0000H SJMP START ORG 0030H

START: MOV R2,#00H;和高字节清零

MOV R3,#00H;和低字节清零

MOV DPTR,#DATA1 ;建立外部数据存储器的地址指针 MOV R4,#10H;预置计数长度

LOOP:MOVX A,@DPTR;从外部数据存储器取数

ADD A ,R3 MOV R3,A MOV A,R2; ADDC A,#00H; MOV R2,A;累加

INC DPTR;地址指针修正

DJNZ R4,LOOP;16字节未累加完,继续循环累加 MOV R4,#04H;R2、R3联合移位4次(除以16) LOOP1: CLR C

MOVA,R2 RRC A

MOV R3,A

DJNZ R4,LOOP1;平均值存放于R3中 SJMP $;结束

DATA1 EQU 1000H; END

18.在DATA1单元中有一个带符号8位二位进制数x。编一程序,按以下关系计算y值,送DATA2单元。

y =x+5,x>0 y=x,x=0 y=x-5,x<0

解:设DATA1、DATA2为内部数据存储器的二个单元(假设为30H、31H)且y的值单字节不会产生溢除出

ORG 000H SJMP START

ORG 0030H

START:MOV A,30H;取数X给A

JZ ZERO;若X=0,则Y=0,转入存 JB ACC.7,NEG;若X<0,则转X-5

POZI :ADD A,#05H;若X>0,则X=5,入存

SJMP ZERO;

NEG:CLR C;

SUBB A,#05H;

ZERO:MOV 31H,A;结果入存

SJMP $ END

19.设内部RAM中30H和31H单元中有两个带符号数,求出其中的大数存放在32H单元中。

解:若两数同号,则值大的数大;两数异号,正数值大

ORG 000H SJMP START ORG 0030H

START: MOV A,30H

XRL A,31H;两数异或

JB ACC.7,YIHAO ;两数异号

TONGHAO:CLRC;两数同号

MOV A,30H SUBB A,31H JC LOOP1-2

LOOP0:MOV A,30H;同号被减数大,值大 LOOED:MOV 32H, A

SJMP $

LOOP1:MOV A,31H;异号被减数大,值小

SJMP ED;

YIHAO:MOV A,30H;异号,哪个正,其值大

JNB ACC.7,LOOP0 SJMP LOOP1 END

20.利用逻辑控制的方法,设计一个主程序,在第1,3,5,6次调出SB1子程序,第2,4,7,8次调用SB2程序。 解:ORG 000H

SJMP TEST ORG 0030H

TEST:MOV R2,#08H

MOV A,#10101100B

LOOP:RLC A

JC LOOP1

LCALL SB1

SJMP RELT

LOOP1:LCALL SB2 RELT:DJNZ R2,LOOP

SJMP $

PRGO : RET PRG1:RET

END

21.将DATA单元存放的以ASCII码表示的16进制数转换成十进制数存放于DATA+1单元。 解:先将DATA的ASCII码转换成十六进制的数,再转换成十进制数。数字的ASCII码转成十六进制数(即为十进制数)采用减30H

字母的ASCII码转成十六进制数采用减37H,十六进制再转十进制可采用先减0AH,再加10H;这样-37H-0AH+10H=-31H,可采用直接减31H。

数字与字母的ASCII的区别,可采用对D6的检测D6=1为字母的ASCII码,反之为数字的ASCII码。

ORG 000H SJMP TEST ORG 0030H

TEST:MOV R0,#DATA1

MOV A,@R0;将DATA1的数给A CLR C;

LOOP:JB ACC.6,LOOP1;是字母,转LOOP1

SUBB A,#30H;是数字减30H

ED:MOV DATA+1,A;入存

SJMP $;结束

LOOP1:SUBB A,#31H;是字母减31H

SJMP ED;

DATA1 EQU 30H END

22.编一个将十六进制数转换成十进制数的子程序。

解:一个单字节的十六进制数转成十进制数一般考虑用二字节BCD码来存放。设转换后的数存放在R3(高)、R4(低)中。

ORG 000H SJMP TEST ORG 0030H

TEST:MOV DPTR,#TAB;建立表头地址

MOV A,30H ANL A,#0F0H

SWAPA;高半字节分离

ADD A,0E0H;高半字节数乘2 MOV B,A;暂存

搜索更多关于: 单片机原理与运用-第三章答案 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

MOV 50H,#00H;正数个数统计单元清零 MOV 70H,#00H;负数个数统计单元清零 LOOP:MOVA,@R0 ;取数 JB ACC.7,NEG ;是负数转NEG处理 POST:MOV R1,1EH;是正数,将暂存的地址送R1(间址寄存器) MOV @R1,A;将正数入存 INC50H;正数个数加1 INC 1EH;正数暂存地址加1修正 LOOP1:INCR0;取数地址加1修正 DJNZ R2,LOOP;计数长度减1,不等于零,继续循环统计 SJMP $;结束 NEG: MOVR1,1FH;是负数,将暂存的地址送R1(间址寄存器) MOV @R1,A;将正数入存 INC 70H;负数个数加1 INC1FH;负数暂存地址加1修正 SJMP LO

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com