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

排序可以用之前的冒泡排序,关键的问题是求平均数。因为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. 【剑指offer】找出数组中任意重复的数字(不修改数组),C++实现

    原创博文,转载请注明出处! # 题目 在一个长度为n+1的数组里的所有数字都在1~n的范围内,所以数组中至少有一个数字是重复的.请找出数组中任意一个重复的数字,但不能修改输入的数组.例如,如果输入长度 ...

  2. 【剑指offer】 和为s的连续正数序列,C++实现

    原创博文,转载请注明出处! # 题目 # 思路 设置两个辅助变量small和big,small表示序列的最小值,big表示序列的最大值.如果sum(small ~ big) > s,则增大sma ...

  3. day3 文件系统 内核模块 ctags

    nfs网络文件系统 smb   修改配置文件  sudo  vim /etc/samba/smb.conf    重启服务   /etc/init.d/samba restart 自制小的文件系统 1 ...

  4. Percona Xtrabackup 安装

    1.安装Percona Xtrabackup YUM Repository --安装repository [root@manager ~]# yum install https://www.perco ...

  5. 每天一个linux命令(权限):【转载】chown命令

    chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID:组可以是组名或者组ID:文件是以空格分开的要改变权限的文件列表,支持通配符.系统管理员经常使用chown命令,在将文件拷贝 ...

  6. stm32寄存器版学习笔记07 ADC

    STM32F103RCT有3个ADC,12位主逼近型模拟数字转换器,有18个通道,可测量16个外部和2个内部信号源.各通道的A/D转换可以单次.连续.扫描或间断模式执行. 1.通道选择 stm32把A ...

  7. python学习-序列排序

    python的排序中,可以使用内置的sort()来对序列进行排序,也可以使用内置的sorted()函数对序列进行排序,区别是,当使用sort()时,是对原序列进行排序,而sorted()则是生成一个新 ...

  8. 51nod 1019 逆序数

    在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序.一个排列中逆序的总数就称为这个排列的逆序数. 如2 4 3 1中,2 1,4 3,4 1,3 1是逆序 ...

  9. CentOS 6.6下安装OpenOffice4.0

    最近由于项目需要,要在公司服务器上安装Openoffice,网上搜了一些资料后成功安装,现分享给大家. 1.首先先下载好需要的rpm包:Apache_OpenOffice_4.0.0_Linux_x8 ...

  10. matplotlib ----- 同一线条的不同颜色

    对同一线条的各个段或者特殊点,  用不同的颜色. 参考下面 http://stackoverflow.com/questions/30121773/python-is-it-possible-to-c ...