ARM汇编 均值滤波实验
实验要求是排序后去掉最大值最小值,然后把剩下的求平均数。
排序可以用之前的冒泡排序,关键的问题是求平均数。因为ARM没有除法,应该怎么求平均数呢?
最简单的方法就是减法了,用被除数一直减除数,看减了多少次就可以了。
然而要四舍五入,因为寄存器都是整数,保留余数再和除数的一半比较,如果大于就进一,小于等于就忽略
所以把被除数加上除数的一半(向下取整)再循环减除数就行。
AREA EXAMPLE,CODE,READONLY
ENTRY MOV R2,R0 LOOP_1 CMP R1,R0
BGE LOOP_3
ADD R1,R1,#
SUB R2,R2,#
MOV R3,#
LDR R4,=0X40000000
B LOOP_2 LOOP_2 CMP R3,R2
BGE LOOP_1
ADD R3,R3,#
LDR R5,[R4]
LDR R6,[R4,#]
ADD R4,R4,#
CMP R5,R6
BLS LOOP_2
SUB R4,R4,#
STR R5,[R4,#]
STR R6,[R4]
ADD R4,R4,#
B LOOP_2 LOOP_3
LDR SP,=0X40000000
MOV R2,#
STR R2,[SP]
MOV R3,#
MUL R3,R0,R3
SUB R3,R3,#
STR R2,[SP,R3]
MOV R3,#
MOV R4,#
MOV R5,#
B LOOP_4 LOOP_4
CMP R2,R0
BGE LOOP_5
LDR R3,[SP,R4]
ADD R5,R5,R3
ADD R4,R4,#
ADD R2,R2,#
B LOOP_4 LOOP_5
SUB R2,R0,#;
ADD R5,R2,LSR#;除数的一半
MOV R1,#
B LOOP_6 LOOP_6
CMP R5,R2
BLO LOOP_END
ADD R1,R1,#;把减的次数放在R1
SUB R5,R5,R2
B LOOP_6 LOOP_END
NOP END
ARM汇编 均值滤波实验的更多相关文章
- linux驱动系列之arm汇编
在arm平台学习linux时,会遇到arm汇编指令,arm汇编指令与8086汇编指令很多地方都不同,在此记下来以免后面忘了,同时在学习了汇编指令之后分析一些汇编指令编写的代码. 一.相对跳转指令b.b ...
- arm汇编几个经典例题
这几个例题来自我们的上机实验,通过这几个例题基本上能掌握arm汇编一些最基本的操作 arm汇编实现1-100的加法 12345678910111213 AREA Example1,CODE,READO ...
- 学习 opencv---(7) 线性邻域滤波专场:方框滤波,均值滤波,高斯滤波
本篇文章中,我们一起仔细探讨了OpenCV图像处理技术中比较热门的图像滤波操作.图像滤波系列文章浅墨准备花两次更新的时间来讲,此为上篇,为大家剖析了"方框滤波","均值滤 ...
- 生成ARM汇编
使用ndk即可生成arm汇编 1.首先写好hello.c 2.编写makefile #ndk根目录 NDK_ROOT=E:\Android\android-ndk-r10b #编译器根目录 TOOLC ...
- ARM汇编指令调试方法
学习ARM汇编时,少不了对ARM汇编指令的调试.作为支持多语言的调试器,gdb自然是较好的选择.调试器工作时,一般通过修改代码段的内容构造trap软中断指令,实现程序的暂停和程序执行状态的监控.为了在 ...
- ARM汇编
ARM汇编 ISA ISA即指指令集架构(Instruction Set Architecture)是与程序设计有关的计算机架构的一部分,包括本地数据类型.指令.寄存器.地址模式.内存架构.中断和意外 ...
- 3.1 ARM汇编编程概述
1. 汇编编程 为什么要学习汇编 1). Bootloader初始化 2). Linux kernel 3). 高效 2. ARM汇编分类 1. ARM标准汇编:ARM公司得汇编器适合在Windows ...
- arm汇编进入C函数分析,C函数压栈,出栈,传参,返回值
环境及代码介绍 环境和源码 由于有时候要透彻的理解C里面的一些细节问题,所有有必要看看汇编,首先这一切的开始就是从汇编代码进入C的main函数过程.这里不使用编译器自动生成的这部分汇编代码,因为编译器 ...
- opencv实现图像邻域均值滤波、中值滤波、高斯滤波
void CCVMFCView::OnBlurSmooth()//邻域均值滤波 { IplImage* in; in = workImg; IplImage* out = cvCreateImage( ...
随机推荐
- PHP 反引号运行Shell命令,C程序
/********************************************************************* * PHP 反引号运行Shell命令,C程序 * 说明: ...
- Jmeter查看结果树
取样结果: Thread Name: test 1-2 线程名称:测试1 - 2Sample S ...
- IE中拖放问题
1.所有的元素上都能绑定放置目标的事件,但并不保证此元素是有效的放置对象. 默认情况下,IE中只有文本框(<input/>或<textarea/>)是网页上唯一有效的放置目标. ...
- WebStorm的主题与设置
1. Webstorm主题风格选择 2. Webstorm字体字号配置 3. Webstorm快捷键的查找 4. Webstorm插件的安装
- CF1117C Magic Ship
CF1117C Magic Ship 考虑到答案具单调性(若第 \(i\) 天能到达目的点,第 \(i+1\) 天只需向风向相反的方向航行),可以二分答案. 现在要考虑给出一个天数 \(m\) ,问 ...
- Codeforces 17E Palisection 【Manacher】
Codeforces 17E Palisection E. Palisection In an English class Nick had nothing to do at all, and rem ...
- echarts tooltips宽度设置
提示文本太长显示不全,设置宽度后:
- matplotlib ----- 同一线条的不同颜色
对同一线条的各个段或者特殊点, 用不同的颜色. 参考下面 http://stackoverflow.com/questions/30121773/python-is-it-possible-to-c ...
- Android.mk用法详解
一.Android.mk介绍 Android.mk是Android提供的一种makefile文件,用来指定诸如编译生成so库名.引用的头文件目录.需要编译的.c/.cpp文件和.a静态库文件等.要掌握 ...
- MySQL的安装配置教程
1. 官网下载ZIP压缩版本(本人电脑是64位的) x64bit MySQL Community 2. 解压到E:\SoftwareFiles\mysql-5.7.11-winx64 3. 在E:\S ...