平均值问题(51汇编语言)

假设片外SRAM的8000H-807FH地址单元保存着一组无符号字符型数据,请计算其中所有小于80H数据的平均值。
悬赏分:15 - 解决时间:2010-1-3 12:01
;-------------------------------

最佳答案:

汇编语言的程序如下。
        ORG  0000H
        LJMP MAIN
        ORG  0050H
MAIN:
        MOV  DPTR, #8000H
        MOV  R2, #0        ;小于80H数据的个数
        MOV  R5, #0        ;总和
        MOV  R6, #0
        MOV  R7, #80H      ;数据总数
LOOP1:                     ;循环求和
        MOVX A, @DPTR
        INC  DPTR
        JB   ACC.7, NEXT
        INC  R2
        ADD  A, R6
        MOV  R6, A
        JNC  NEXT
        INC  R5            ;高8位
NEXT:
        DJNZ R7, LOOP1
        MOV  A, R2
        JZ   _END          ;如果个数为0,转到结束
        CALL R56_R2        ;求平均
_END:                      ;平均值在R6中.
        NOP
        SJMP $
;-------------------------------
R56_R2:    ;用移位法来做除法:(R5R6)/R2=R6...R5
        MOV  R7, #8
LOOP:   CLR  C
        MOV  A, R6         ;左移.
        RLC  A
        MOV  R6, A
        MOV  A, R5
        RLC  A
        MOV  R5, A
        MOV  F0, C
;
        CLR  C
        MOV  A, R5
        SUBB A, R2
        MOV  R5, A
        JNC  GJIAN          ;够减跳到商加一.
        JB   F0, GJIAN
BGJIAN:
        ADD  A, R2          ;不够减,恢复余数.
        MOV  R5, A
        SJMP NEXT_W
GJIAN:
        INC  R6
NEXT_W:
        DJNZ R7, LOOP
        RET
;-------------------------------
        END
;-------------------------------
回答者: 做而论道 - 十一级   2009-12-27 16:29
提问者对于答案的评价:非常感谢!
原题网址:http://zhidao.baidu.com/question/130631864.html

 

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值