单片机编程:求8个无符号数的平均值
2016-01-25 11:38
197 查看
单片机编程:求8个无符号数的平均值。
有8个无符号数,存放在内部RAM以20H开始的8个单元中,要求将它们的平均值保存在R2中。
悬赏分:20 - 解决时间:2010-4-11 22:31
;------------------------------------------------------------------------------
最佳答案:
做这个题目,要有两个阶段,先求和,再除以8。程序如下:
;8个无符号数存放在内部RAM以20H开始的8个单元中,先求和:
;
MOV R0, #20H ;设定数据起始地址
MOV R1, #8 ;共有8字节,将循环相加8次
MOV R2, #0 ;R2 R3清零
MOV R3, #0
LOOP:
MOV A, @R0 ;取来一个数字
ADD A, R3 ;和低8位相加
MOV R3, A
JNC QQQ ;无进位转移
INC R2 ;有则高8位加一
QQQ:
INC R0 ;修改地址指针
DJNZ R1, LOOP ;循环8次
;
;至此,求和完毕,和数在R2R3中,下面就要对和数除以8,求得平均值。
;
;除以8,可以编写一段16位数除以8位数的程序,呵呵,那就太长了!
;也可以把这16位数,右移3位,也相当于除以8。
;两个字节,右移1位,就需要6条指令,右移3位,就要用18条指令,还是太长!!!
;
;且看下面,仅仅使用了5条指令,就完成了这个除以8的任务。
;
ANL A, #0F8H
ADD A, R2
RL A
SWAP A
MOV R2, A ;按照要求,把平均值存R2
;
;这是世界上最简捷的16位数(共11个有效位)除以8的程序。
;
SJMP $
END
;------------------------------------------------------------------------------
回答者: 做而论道 - 十三级 2010-4-11 19:56
提问者对于答案的评价:太感谢了。
原题网址:http://z.baidu.com/question/146671754.html
另外,还有补充提问,可见下篇文章。
有8个无符号数,存放在内部RAM以20H开始的8个单元中,要求将它们的平均值保存在R2中。
悬赏分:20 - 解决时间:2010-4-11 22:31
;------------------------------------------------------------------------------
最佳答案:
做这个题目,要有两个阶段,先求和,再除以8。程序如下:
;8个无符号数存放在内部RAM以20H开始的8个单元中,先求和:
;
MOV R0, #20H ;设定数据起始地址
MOV R1, #8 ;共有8字节,将循环相加8次
MOV R2, #0 ;R2 R3清零
MOV R3, #0
LOOP:
MOV A, @R0 ;取来一个数字
ADD A, R3 ;和低8位相加
MOV R3, A
JNC QQQ ;无进位转移
INC R2 ;有则高8位加一
QQQ:
INC R0 ;修改地址指针
DJNZ R1, LOOP ;循环8次
;
;至此,求和完毕,和数在R2R3中,下面就要对和数除以8,求得平均值。
;
;除以8,可以编写一段16位数除以8位数的程序,呵呵,那就太长了!
;也可以把这16位数,右移3位,也相当于除以8。
;两个字节,右移1位,就需要6条指令,右移3位,就要用18条指令,还是太长!!!
;
;且看下面,仅仅使用了5条指令,就完成了这个除以8的任务。
;
ANL A, #0F8H
ADD A, R2
RL A
SWAP A
MOV R2, A ;按照要求,把平均值存R2
;
;这是世界上最简捷的16位数(共11个有效位)除以8的程序。
;
SJMP $
END
;------------------------------------------------------------------------------
回答者: 做而论道 - 十三级 2010-4-11 19:56
提问者对于答案的评价:太感谢了。
原题网址:http://z.baidu.com/question/146671754.html
另外,还有补充提问,可见下篇文章。
相关文章推荐
- 两道单片机编程题--求最大值和数据传送
- 几道单片机编程题
- java中volatile关键字的含义
- 为什么python运行的慢
- spring4 学习4 spring MVC+mybatis+Mysql
- Java IO和Java NIO在文件拷贝上的性能差异分析
- 单片机编程题 -3
- 单片机编程题 -2
- 单片机编程题 -1
- 单片机 汇编程序问题三则
- 16个拼装4位二进制数0~F转换成ASCII码 -单片机编程
- java(十九)接口
- 4个双字节数求和及求出平均值 -单片机编程
- 字节合并 -单片机编程
- Python IDE(集成开发环境)汇总
- 进行数据比较 -单片机编程
- 计算全班单片机期末成绩的总和及平均分 -单片机编程
- R0中的8位二进制数转换成3位BCD码 -单片机编程
- 将片外RAM的1000H单元开始的100个字节数据相加 -单片机编程
- 编写3字节二进制减法子程序 -单片机编程