<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > ARM匯編學(xué)習

ARM匯編學(xué)習

作者: 時(shí)間:2016-11-09 來(lái)源:網(wǎng)絡(luò ) 收藏
最近用ARM匯編寫(xiě)了3個(gè)小程序,今天發(fā)上來(lái)供大家參考一下。

程序1:C語(yǔ)言中嵌套ARM匯編實(shí)現找出三個(gè)數中的最大值,程序如下:

本文引用地址:http://dyxdggzs.com/article/201611/317579.htm

test.c文件:

#include #define N 3int MAX(int *p,int b){int rmax = 0;  //用來(lái)返回最大值int temp = 0;  //作為變量交換的中間變量int count = 0; //計數器,用來(lái)做循環(huán)控制變量__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};//定義一個(gè)數組int max = MAX(src,N);return 0;}
程序2:C語(yǔ)言調用匯編程序實(shí)現冒泡排序,程序如下:

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	;將數組的字節長(cháng)度賦值給R6ADD R7,R0,R6	;將數組最后的元素的地址賦值給R7outerMOV R5,R0		;重新將數組的基地址賦值給R5innerLDR R8,[R5]		 ;將數組的前一個(gè)元素賦值給R8LDR R9,[R5,#4]	 ;將數組的后一個(gè)元素賦值給R9CMP R8,R9		 ;比較前一個(gè)元素和后一個(gè)元素的大小STRGT R8,[R5,#4] ;前一個(gè)元素大于后一個(gè)元素,則將R8的值賦給數組的后一個(gè)元素STRGT R9,[R5]	 ;前一個(gè)元素大于后一個(gè)元素,則將R9的值賦給數組的前一個(gè)元素ADD R5,R5,#4	 ;將指向數組元素的指針下移一個(gè)單位CMP R5,R7		 ;比較數組的指針是否移到數組的最后一個(gè)元素BLT inner		 ;若沒(méi)有,則跳轉到下一次內層循環(huán)SUB R7,R7,#4	 ;R7數組指針前移一個(gè)單位ADD R3,R3,#4	 ;R3計數器加4CMP	R3,R6		 ;比較R3和數組字節長(cháng)度的大小BLT outer		 ;R3小于數組的字節長(cháng)度,跳轉到下一次外層循環(huán)MOV PC,LR		 ;從匯編程序返回到C文件程序END

程序3:匯編語(yǔ)言調用C語(yǔ)言實(shí)現選擇排序,程序如下:

asmain.s如下:

AREA ASMAIN,CODE,READONLYCODE32ENTRYIMPORT my_sortstartLDR R0,=DATA1	;將數組的地址傳給my_sort函數的第一個(gè)參數MOV R1,#7		;將數組的地址傳給my_sort函數的第二個(gè)參數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環(huán)境下編譯的,如果在A(yíng)DS1.2環(huán)境下進(jìn)行編譯,還要進(jìn)行一些修改。


關(guān)鍵詞: ARM匯編學(xué)

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>