ARM嵌入式设计实验

ARM嵌入式设计实验

ID:41847998

大小:418.75 KB

页数:31页

时间:2019-09-03

ARM嵌入式设计实验_第1页
ARM嵌入式设计实验_第2页
ARM嵌入式设计实验_第3页
ARM嵌入式设计实验_第4页
ARM嵌入式设计实验_第5页
资源描述:

《ARM嵌入式设计实验》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、汇编指令实验一COUNTEQU0x40003100;定义一个变量,地址为0x40003100AREAExample2,CODE,READONLY;声明代码段Example2ENTRY;标识程序入口CODE32;声明32位ARM指令STARTLDRR1,=COUNT;R1<=COUNTMOVR0,#0;R0<=0STRR0,[R1];[R1]<=R0,即设置COUNT为0LOOPLDRR1,=COUNTLDRR0,[R1];R0<=[R1]ADDR0,R0,#1;R0<=R0+1CMPR0,#10;R0与10比较,影响条件码标志MOVHSR0

2、,#0;若R0大于等于10,则此指令执行,R0<=0STRR0,[R1];[R1]<=R0,即保存COUNTBLOOPEND汇编指令实验二;文件名:TEST4.S;功能:计算X的n次方的值;说明:X和n均为无符号整数XEQU9nEQU8;定义X的值为9;定义n的值为8AREAExample4,CODE,READONLY;声明代码段Example4ENTRYCODE32;标识程序入口;声明32位ARM指令STARTLDRSP,=0x40003F00STMFD/LMDFD指令)LDRR0,=XLDRR1,=nBLPOWHALTBHALT设置堆栈

3、(满递减堆栈,使用;调用子程序POW,返回值为R0;名称:POW;功能:整数乘方运算。;入口参数:R0底数;R1指数;出口参数:R0运算结果;占用资源:RO、R1;说明:本子程序不考虑溢出问题POW;寄存器入栈保护;将指数值复制到R2,并影响条件码标STMFDSP!,{R1-R12,LR}MOVSR2.R1志MOVEQR0,#1BEQPOW_END;若指数为0,则设置R0=1;若指数为0,则返回CMPR2,#1POW_ENDMOVSUBR1,R0;设置DO_MUL子程序的入口参数RO和R2,R2,#1;计数器R2=指数值减1POW_L1BL

4、DO_MUL;调用DO_MUL子程序,RO=R1*ROSUBSR2,R2,#1;每循环一次,计数器R2减1BNEPOW_L1;若计数器R2不为0,跳转到POW.L1BEQ;若指数为1,则返回。(此时R0没有被更改)POW_ENDLDMFDSP!,{R1・R12,PC};寄存器出栈,返回;名称:DO_MUL;功能:32位乘法运算。;入口参数:R0乘数;R1被乘数;岀口参数:R0计算结果;占用资源:RO、R1;说明:本子程序不会破坏R1DO_MULMULR0,R1,R0;RO=R1*ROMOVPC,LR;返回END工程模板应用试验(1)C程序的

5、运行环境,然后进入C程序代码。Startup.s程序:;起动文件。初始化IMPORT

6、lmage$$RO$$Limit

7、IMPORT

8、lmage$$RW$$Base

9、IMPORT

10、lmage$$ZI$$Base

11、IMPORT

12、lmage$$ZI$$Limit

13、IMPORTMain;声明C程序中的Main()函数AREAStart,CODE,READONLY;声明代码段StartENTRY;标识程序入口CODE32;声明32位ARM指令ResetLDRSP=0x40003F00;初始化C程序的运行环境LDRLDRLDRRO,=

14、lmage$$

15、RO$$Limit

16、R1,=

17、lmage$$RW$$Base

18、R3,=

19、lmage$$ZI$$Base

20、CMPRO,R1BEQLOOP1LOOPOCMPR1,R3LDRCCR2,[RO],#4STRCCR2,[R1],#4BCCLOOPOLOOP1LDRR1,=

21、lmage$$ZI$$Limit

22、MOVR2,#0LOOP2CMPR3,R1STRCCR2,[R3],#4BCCLOOP2BMain;跳转到C程序代码Main()函数ENDTEST.C程序:#defineuint32unsignedint#defineN100uint32sum;/

23、/使用加法运算来计算1+2+3+...+(N-1)+N的值。(N>0)voidMain(void){uint32i;sum=0;for(i=0;i<=N;i++){sum+=i;}while(1);}(2)Startup.s程序:;起动文件。初始化C程序的运行环境,然后进入C程序代码。IMPORTIMPORTIMPORTIMPORT

24、lmage$$RO$$Limit

25、

26、lmage$$RW$$Base

27、

28、lmage$$ZI$$Base

29、

30、lmage$$ZI$$Limit

31、IMPORTMain;声明C程序中的Main()函数AREAStart,

32、CODE,READONLY;声明代码段StartENTRYCODE32;标识程序入口;声明32位ARM指令ResetLDRSP=0x40003F00;初始化C程序的运行环境LDR

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。