码迷,mamicode.com
首页 > 其他好文 > 详细

ARM汇编 均值滤波实验

时间:2016-05-13 12:05:11      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:

实验要求是排序后去掉最大值最小值,然后把剩下的求平均数。

排序可以用之前的冒泡排序,关键的问题是求平均数。因为ARM没有除法,应该怎么求平均数呢?

最简单的方法就是减法了,用被除数一直减除数,看减了多少次就可以了。

然而要四舍五入,因为寄存器都是整数,保留余数再和除数的一半比较,如果大于就进一,小于等于就忽略

所以把被除数加上除数的一半(向下取整)再循环减除数就行。

    AREA EXAMPLE,CODE,READONLY
    ENTRY

        MOV R2,R0

LOOP_1    CMP R1,R0
        BGE LOOP_3
        ADD R1,R1,#1
        SUB    R2,R2,#1
        MOV R3,#0
        LDR R4,=0X40000000
        B    LOOP_2
        
LOOP_2    CMP    R3,R2
        BGE LOOP_1
        ADD R3,R3,#1
        LDR R5,[R4]
        LDR R6,[R4,#4]
        ADD R4,R4,#4
        CMP    R5,R6
        BLS LOOP_2
        SUB R4,R4,#4
        STR R5,[R4,#4]
        STR R6,[R4]
        ADD R4,R4,#4
        B LOOP_2
        
LOOP_3
        LDR    SP,=0X40000000
        MOV R2,#0
        STR    R2,[SP]
        MOV R3,#4
        MUL R3,R0,R3
        SUB R3,R3,#4
        STR R2,[SP,R3]
        MOV R3,#0
        MOV R4,#0
        MOV R5,#0
        B LOOP_4
        
LOOP_4
        CMP R2,R0
        BGE LOOP_5
        LDR R3,[SP,R4]
        ADD R5,R5,R3
        ADD R4,R4,#4
        ADD R2,R2,#1
        B LOOP_4
        
LOOP_5
        SUB R2,R0,#2;
        ADD    R5,R2,LSR#1;除数的一半
        MOV R1,#0
        B LOOP_6
        
LOOP_6
        CMP R5,R2
        BLO LOOP_END
        ADD R1,R1,#1;把减的次数放在R1
        SUB R5,R5,R2
        B LOOP_6
        
LOOP_END
        NOP
        
        
        
        
        
        
        
        
        
    
        
        END
        

 

ARM汇编 均值滤波实验

标签:

原文地址:http://www.cnblogs.com/wzben/p/5487094.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!