ARM汇编 均值滤波实验
2016-05-12 19:52
357 查看
实验要求是排序后去掉最大值最小值,然后把剩下的求平均数。
排序可以用之前的冒泡排序,关键的问题是求平均数。因为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
相关文章推荐
- golang kafka
- mapping 详解2(field datatypes)
- 关于Android studio 启动报错Internal error. Please report to https://code.google.com/p/android/issues
- VR开发 入门 使用Three.js 开发的WebVR demo
- 用MySQL创建数据库和数据库表代码
- 支持https的axel修改
- Android中进行基于 HTTP协议的网络访问
- 多线程常见的面试问题
- Java并发编程总结1——线程状态、synchronized
- com组件的使用
- OpenCV 基于超像素分割的图像区域选取方法及源码
- 使用Intent在活动间穿梭 --7
- OpenCV 基于超像素分割的图像区域选取方法及源码
- SQL Server 日志清理
- Spark MLlib中的协同过滤
- 模拟水题,牛吃草(POJ2459)
- 正则表达式30分钟入门教程
- 15分钟了解Apache Phoenix(HBase的开源SQL引擎)
- 使用dtree构建框架导航
- hibernate 级联验证-@Valid (JDK1.7)