您的位置 首页 IOT

ARM汇编学习

最近用ARM汇编写了3个小程序,今天发上来供大家参考一下。程序1:C语言中嵌套ARM汇编实现找出三个数中的最大值,程序如下:test.c文件:#in…

最近用ARM汇编写了3个小程序,今日发上来供我们参阅一下。

程序1:C言语中嵌套ARM汇编完成找出三个数中的最大值,程序如下:

test.c文件:

#include #define N 3int MAX(int *p,int b){int rmax = 0;  //用来回来最大值int temp = 0;  //作为变量交流的中心变量int count = 0; //计数器,用来做循环控制变量__asm{MOV count,#0loop:LDR temp,[p,count * 4]CMP rmax,temp			MOVLT rmax,tempADD count,count,#1CMP count,bBNE	loop }return rmax;	}int main(){int src[N]={3,6,5};//界说一个数组int max = MAX(src,N);return 0;}

程序2:C言语调用汇编程序完成冒泡排序,程序如下:

main.c如下:

#include #define N  10int array[N] = {10,9,8,11,13,7,3,3,5,4};extern void my_sort(int *p,int B);int main(){my_sort(array,N);return 0;}

asmain.c如下:

AREA ASMAIN,CODE,READONLYCODE32ENTRYEXPORT my_sortmy_sortMOV R2,#4		;R2<-4MOV R3,#0		;R3<-0MOV R4,R1		;将数组的宽度赋值给R4MOV R5,R0		;将数组的基地址赋值给R5MUL R6,R4,R2	;将数组的字节长度赋值给R6ADD R7,R0,R6	;将数组最终的元素的地址赋值给R7outerMOV R5,R0		;从头将数组的基地址赋值给R5innerLDR R8,[R5]		 ;将数组的前一个元素赋值给R8LDR R9,[R5,#4]	 ;将数组的后一个元素赋值给R9CMP R8,R9		 ;比较前一个元素和后一个元素的巨细STRGT R8,[R5,#4] ;前一个元素大于后一个元素,则将R8的值赋给数组的后一个元素STRGT R9,[R5]	 ;前一个元素大于后一个元素,则将R9的值赋给数组的前一个元素ADD R5,R5,#4	 ;将指向数组元素的指针下移一个单位CMP R5,R7		 ;比较数组的指针是否移到数组的最终一个元素BLT inner		 ;若没有,则跳转到下一次内层循环SUB R7,R7,#4	 ;R7数组指针前移一个单位ADD R3,R3,#4	 ;R3计数器加4CMP	R3,R6		 ;比较R3和数组字节长度的巨细BLT outer		 ;R3小于数组的字节长度,跳转到下一次外层循环MOV PC,LR		 ;从汇编程序回来到C文件程序END

程序3:汇编言语调用C言语完成挑选排序,程序如下:

asmain.s如下:

AREA ASMAIN,CODE,READONLYCODE32ENTRYIMPORT my_sortstartLDR R0,=DATA1	;将数组的地址传给my_sort函数的第一个参数MOV R1,#7		;将数组的地址传给my_sort函数的第二个参数BL my_sort		;履行my_sort函数并回来AREA datablock,DATA,READWRITEDATA1	DCD 2,5,10,11,9,7,1END

main.c如下:

#include void my_sort(int *p, int B){int max = 0;int tmp = 0;int i = 0;int j = 0;int z = 0;for(i = 0; i < B - 1; i++){for(j = 0; j < B - i; j++){if(max < p[j]){max = p[j];z = i;}}j--;max = 0;tmp = p[z];p[z] = p[j];p[j] = tmp;}}

注:上面的程序我是在MDK环境下编译的,如果在ADS1.2环境下进行编译,还要进行一些修正。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/iot/276424.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部