实验要求是排序后去掉最大值最小值,然后把剩下的求平均数。
排序可以用之前的冒泡排序,关键的问题是求平均数。因为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( ...
随机推荐
-
SegmentControl 那些令人烦恼的事儿
每个人的曾经都很苦逼.我知道我很卑微,但我不曾放慢脚步,在这条路上至死不悔.愿与你同行. UISegmentControl 概述 UISegmentControl 是系统的段选择控件,具有简洁大方的外 ...
-
Oracle的优化器介绍
Oracle优化器介绍 本文讲述了Oracle优化器的概念.工作原理和使用方法,兼顾了Oracle8i.9i以及最新的10g三个版本.理解本文将有助于您更好的更有效的进行SQL优化工作. RBO优化器 ...
-
20145129 《Java程序设计》第8周学习总结
20145129 <Java程序设计>第8周学习总结 教材学习内容总结 NIO NIO使用频道(channel)来衔接数据节点,对数据区的标记提供了clear(),rewind(),fli ...
-
通过自定义注解反射生成SQL语句
----------------------------------------Program.cs---------------------------------------- using Sys ...
-
codeforces 659C . Tanya and Toys 二分
题目链接 将给出的已经有了的排序, 在前面加上0, 后面加上1e9+1. 然后对相邻的两项判断. 如果相邻两项之间的数的和小于m, 那么全都选上, m减去相应的值. 如果大于m, 那么二分判断最多能选 ...
-
【工匠大道】升级Mac下的svn,解决命令行不能使用svn的问题
本文地址 原文地址 一. 为什么要升级SVN? 因为MAC上默认安装的是1.6版本,在使用时经常会提示SVN版本太旧,所以一定要升级 二. 怎么升级? 所有软件安装都是这三步吧,哈哈 第一步: 下载 ...
-
Educational Codeforces Round 26-D. Round Subset
题目大意:给你n个数字(小于1e18),从n个数中取k个数字相乘,使其后缀0最多,问你后缀0最多是多少. 知道得用三维的dp[ i ] [ j ] [ k ] 第一维表示用到第 i 个数为止,j 表 ...
-
exception PLS-00103: Encountered the symbol ";("; when expecting one of the following:
exception PLS-00103: Encountered the symbol "(" when expecting one of the following: Cre ...
-
Thread was being aborted.
异常:Thread was being aborted.(正在终止线程) 网上很多人说Response.redirect或Response.write()放在了try catch块中引起 百度一下就可 ...
-
Python多线程-事件
线程事件用于线程控制线程,实现多个进程间的交互,线程事件的初始值为False set:将线程事件的值设为True clear:将线程事件的值设为False # -*- coding:utf-8 -*- ...