欢迎来到天天文库
浏览记录
ID:50380273
大小:125.00 KB
页数:2页
时间:2020-03-08
《实验三、C语言程序实验和C语言调用汇编程序实验.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验三:C语言程序实验和C语言调用汇编程序实验一、实验目的通过实验了解使用ADS1.2编写C语言程序,并进行调试。二、实验设备硬件:PC机一台软件:Windows98/XP/2000系统,ADS1.2集成开发环境三、实验内容编写一个汇编程序文件和一个C程序文件。汇编程序的功能是初始化堆栈指针和初始化C程序的运行环境,然后调跳转到C程序运行,这就是一个简单的起动程序。C程序使用加法运算来计算1+2+3+...+(N-1)+N的值(N>0)。四、实验预习要求仔细阅读教材中的ARM指令系统的内容;熟悉ADS工程编辑和AXD调试的内容。(本
2、实验使用软件仿真)五、实验步骤1.启动ADS1.2,使用ARMExecutableImage工程模板建立一个工程ProgramC。2.建立源文件Startup.S和Test.c,编写实验程序,然后添加到工程中。3.设置工程连接地址ROBase为0x40000000,RWBase为0x40003000。设置调试入口地址Imageentrypoint为0x40000000。4.设置位于开始位置的起始代码段,如图3.8所示。图3.8设置位于开始位置的起始代码段5.编译连接工程,选择【Project】->【Debug】,启动AXD进行软件仿
3、真调试。6.在Startup.S的“BMain”处设置断点,然后全速动行程序。7.程序在断点处停止。单步运行程序,判断程序是否跳转到C程序中运行。8.选择【ProcessorViews】->【Variables】)打开变量观察窗口,观察全局变量的值,单步/全速运行程序,判断程序的运算结果是否正确。六、实验参考程序C语言实验的参考程序见程序清单3.3。汇编起动代码见程序清单3.4。程序清单3.3C语言实验参考程序#defineuint8unsignedchar#defineuint32unsignedint#defineN100uin
4、t32sum;//使用加法运算来计算1+2+3+...+(N-1)+N的值。(N>0)voidMain(void){uint32i;sum=0;for(i=0;i<=N;i++){sum+=i;}while(1);}程序清单3.4简单的起动代码;起动文件。初始化C程序的运行环境,然后进入C程序代码。IMPORT
5、Image$$RO$$Limit
6、IMPORT
7、Image$$RW$$Base
8、IMPORT
9、Image$$ZI$$Base
10、IMPORT
11、Image$$ZI$$Limit
12、IMPORTMain;声明C程序中的Main()函
13、数AREAStart,CODE,READONLY;声明代码段StartENTRY;标识程序入口CODE32;声明32位ARM指令ResetLDRSP,=0x40003F00;初始化C程序的运行环境LDRR0,=
14、Image$$RO$$Limit
15、LDRR1,=
16、Image$$RW$$Base
17、LDRR3,=
18、Image$$ZI$$Base
19、CMPR0,R1BEQLOOP1LOOP0CMPR1,R3LDRCCR2,[R0],#4STRCCR2,[R1],#4BCCLOOP0LOOP1LDRR1,=
20、Image$$ZI$$Limit
21、M
22、OVR2,#0LOOP2CMPR3,R1STRCCR2,[R3],#4BCCLOOP2BMain;跳转到C程序代码Main()函数END七、思考题在实验参考程序中,Startup.S文件的作用是什么?如果没有Startup.S文件,C程序会运行出错吗?实验程序中的Main()函数名是否可以更改为其它名字?(提示:Main只是一个标号)
此文档下载收益归作者所有