• ARM汇编 均值滤波实验


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

    排序可以用之前的冒泡排序,关键的问题是求平均数。因为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
            
  • 相关阅读:
    数据存储 twisted
    数据存储 mongodb
    数据存储 redis
    数据存储 txt
    同时使用有线内网与无线外网
    使用xshell从服务器下载文件
    everything使用技巧
    【吴恩达机器学习】第8章 正则化
    python文件重命名
    【统计学习】 第5章 决策树
  • 原文地址:https://www.cnblogs.com/wzben/p/5487094.html
Copyright © 2020-2023  润新知