《ARM练习题目汇编练习.ppt》由会员分享,可在线阅读,更多相关《ARM练习题目汇编练习.ppt(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、ARM练习1、顺序程序设计、顺序程序设计例:通过查表操作实现数组中的第1项数据和第5项数据相加,结果保存到数组中。AREA Buf,DATA,READWRITE;定义数据段BufArrayDCD0 x11,0 x22,0 x33,0 x44;定义12个字字的数组ArrayDCD0 x55,0 x66,0 x77,0 x88DCD0 x00,0 x00,0 x00,0 x00AREA ADD,CODE,readonlyENTRYSTARTLDR R1,=Array ;伪指令加载下面的Array的数据。LDR R2,R1;内存读取R1-R2LDR R3,R1,#16ADD R0,R2,R3;R2+
2、R3-R0STR R0,R1,#32;内存-寄存器 STOP B STOP;死循环,为了让ads可以停止在这儿参看数据 AREA Buf,DATA,READWRITEArrayDCD0 x11,0 x22,0 x33,0 x44 DCD0 x55,0 x66,0 x77,0 x88 DCD0 x00,0 x00,0 x00,0 x00 END2、分支程序设计、分支程序设计例判读X、Y两个变量的大小,从而给变量Z赋予不同的值/if-else结构int x=76,y=88;if(xy)z=100;else z=50;AREA ADD,CODE,readonlyENTRYSTARTMOV R0,#7
3、6;给 76-R0MOV R1,#88;给 88-R0CMP R0,R1;比较R0和R1大小 ;BEQ STOP;可不要;如果相等,跳出到STOP MOVMI R0,#100;小于执行MOVGT R0,#50;大于执行STOP:B STOPEND3、循环程序设计、循环程序设计例:计算例:计算1+2+3+.+100的结果的结果sum=0;for(i=0;ib)a-=b;else b-=a;如果用如果用ARM汇编程序来实现,假设两个整数汇编程序来实现,假设两个整数分别放在寄存器分别放在寄存器R1和和R2中。将结果放到中。将结果放到R3中。中。AREA ADD,CODE,readonlyENTRY
4、STARTMOV R0,#14MOV R1,#26ECMP R0,R1;比较BEQSTOP;相等就跳转到stopCMP R0,R1;比较SUBGT R0,R0,R1;大于执行SUBLT R1,R1,R0;小于执行B ESTOPB STOP ENDsrc DCD 1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2dst DCD 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,02.内存数据区定义如上。内存数据区定义如上。要求将数据从源数据区复要求将数据从源数据区复制到目标数据区。复制时,以制到目标数据区。复制时,以4个字为单位进行。对个字为单位进行。对于最
5、后所剩不足于最后所剩不足4个字的数据,以字为单位进行复制。个字的数据,以字为单位进行复制。AREA ADD,CODE,readonlynum EQU 18ENTRY STARTLDR R0,=src LDR R1,=dst MOV R2,#num MOV sp,#0X40 blockcopyMOVS R3,R2,LSR#2 BEQ copywords STMFD sp!,R4-R7 octcopyLDMIA R0!,R4-R7 STMIA R1!,R4-R7 SUBS R3,R3,#1 BNE octcopy LDMFD sp!,R4-R7 copywordsANDS R2,R2,#3BEQ stopwordcopyLDR R3,R0,#4 STR R3,R1,#4 SUBS R2,R2,#1 BNE wordcopy stopMOV R0,#0 x18 LDR R1,=0 x20026 SWI 0X123456 STOPENDB STOPEND AREA BlockData,DATA,READWRITE srcDCD 1,2,3,4,5,6,7,8DCD 1,2,3,4,5,6,7,8 DCD 1,2 12 dst DCD 0,0,0,0,0,0,0,0 DCD 0,0,0,0,0,0,0,0 DCD 0,0 END