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

排序可以用之前的冒泡排序,关键的问题是求平均数。因为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汇编 均值滤波实验的更多相关文章

  1. linux驱动系列之arm汇编

    在arm平台学习linux时,会遇到arm汇编指令,arm汇编指令与8086汇编指令很多地方都不同,在此记下来以免后面忘了,同时在学习了汇编指令之后分析一些汇编指令编写的代码. 一.相对跳转指令b.b ...

  2. arm汇编几个经典例题

    这几个例题来自我们的上机实验,通过这几个例题基本上能掌握arm汇编一些最基本的操作 arm汇编实现1-100的加法 12345678910111213 AREA Example1,CODE,READO ...

  3. 学习 opencv---(7) 线性邻域滤波专场:方框滤波,均值滤波,高斯滤波

    本篇文章中,我们一起仔细探讨了OpenCV图像处理技术中比较热门的图像滤波操作.图像滤波系列文章浅墨准备花两次更新的时间来讲,此为上篇,为大家剖析了"方框滤波","均值滤 ...

  4. 生成ARM汇编

    使用ndk即可生成arm汇编 1.首先写好hello.c 2.编写makefile #ndk根目录 NDK_ROOT=E:\Android\android-ndk-r10b #编译器根目录 TOOLC ...

  5. ARM汇编指令调试方法

    学习ARM汇编时,少不了对ARM汇编指令的调试.作为支持多语言的调试器,gdb自然是较好的选择.调试器工作时,一般通过修改代码段的内容构造trap软中断指令,实现程序的暂停和程序执行状态的监控.为了在 ...

  6. ARM汇编

    ARM汇编 ISA ISA即指指令集架构(Instruction Set Architecture)是与程序设计有关的计算机架构的一部分,包括本地数据类型.指令.寄存器.地址模式.内存架构.中断和意外 ...

  7. 3.1 ARM汇编编程概述

    1. 汇编编程 为什么要学习汇编 1). Bootloader初始化 2). Linux kernel 3). 高效 2. ARM汇编分类 1. ARM标准汇编:ARM公司得汇编器适合在Windows ...

  8. arm汇编进入C函数分析,C函数压栈,出栈,传参,返回值

    环境及代码介绍 环境和源码 由于有时候要透彻的理解C里面的一些细节问题,所有有必要看看汇编,首先这一切的开始就是从汇编代码进入C的main函数过程.这里不使用编译器自动生成的这部分汇编代码,因为编译器 ...

  9. opencv实现图像邻域均值滤波、中值滤波、高斯滤波

    void CCVMFCView::OnBlurSmooth()//邻域均值滤波 { IplImage* in; in = workImg; IplImage* out = cvCreateImage( ...

随机推荐

  1. JS修改标签中的文本且不影响其中标签

    /********************************************************************* * JS修改标签中的文本且不影响其中标签 * 说明: * ...

  2. HDU - 6172:Array Challenge (BM线性递推)

    题意:给出,三个函数,h,b,a,然后T次询问,每次给出n,求sqrt(an); 思路:不会推,但是感觉a应该是线性的,这个时候我们就可以用BM线性递推,自己求出前几项,然后放到模板里,就可以求了. ...

  3. bzoj 4447 小凸解密码

    bzoj 4447 小凸解密码 先将原始状态的 \(B\) 处理出来,可以发现,若不修改,则每次指定的起始位置不同,对这个环 \(B\) 带来的影响只有 \(B_0\) 不同,即每次 \(B_0=A_ ...

  4. 在 ubuntu 中安装 python3.5 tornado pymysql

    一.在 ubuntu 中安装 python3.5 1.首先,在系统中是自带python2.7的.不要卸载,因为一些系统的东西是需要这个的.python2.7和python3.5是可以共存的. 命令如下 ...

  5. 《DSP using MATLAB》示例Example 9.7

    代码: %% ------------------------------------------------------------------------ %% Output Info about ...

  6. SQL Server 2008 R2占用内存越来越大解决方法

    最近开发sql server数据库项目的过程中发现了这么一个问题,后台网站内存占用95%,通过任务管理器查看占内存的进程sqlserver.exe,是因为SQL Server 2008 R2运行越久, ...

  7. 小波分解和合成的simulink仿真

    采用5-3提升小波的方法 小波分解 数据拆分 预测 更新 数据输出使能电路 电路共有两个输入三个输出,in1是数据输入,in2是输入数据有效信号,out1是更新后的低频信号,out2是预测的高频信号, ...

  8. LG3690 【模板】Link Cut Tree (动态树)

    题意 给定n个点以及每个点的权值,要你处理接下来的m个操作.操作有4种.操作从0到3编号.点从1到n编号. 0:后接两个整数(x,y),代表询问从x到y的路径上的点的权值的xor和.保证x到y是联通的 ...

  9. grpc 安装以及墙的解决方法

    1. 默认官方文档 go get -u google.golang.org/grpc 因墙的问题,大部分安装是无法完成的 2. 解决方法 a. grpc mkdir -p $GOAPTH/src/go ...

  10. Ubuntu : 在主机和虚拟机之间传文件

    电脑用的是windows的系统,vmware player打开了一台ubuntu虚拟机,想在它们之间传送文件. 在宿主机上安装FTP文件传输软件 步骤如下: 1.Ubuntu中安装ssh,命令:sud ...