XI`AN TECHNOLOGICAL UNIVERSITY
实验报告
实验课程名称 ARM嵌入式系统原理及其应用开发
专 业: 物联网工程 班 级: 16060616 姓 名: 田宇龙 学 号: 16060616107 实验学时: 指导教师: 成 绩:
2018 年 6 月 18 日
1
西安工业大学实验报告
专业 实验课程 实验项目 实验设备及器材 物联网工程 汇编调用C语言实验 班级 指导教师 16 姓名 实验日期 田宇龙 2018 学号 同实验者 16060616107
汇编调用C语言实验 PC机、Embest IDE Pro 2004集成开发环境,windows xp 一丶实验目的
1)阅读Embest Arm EduKit II 启动代码,观察处理器启动过程; 2)学会使用Embest IDE 辅助信息窗口来分析判断调试过程和结果;
3)学会在Embest IDE 环境中编写、编译与调试汇编和C 语言相互调用的程序。
二、实验内容
用汇编语言编写一段程序,调用C语言程序进行运算,并输出结果
三、实验原理
程序只要遵守ATPCS 相应规则,就可以使用不同的源代码编写程序。程序间的相互调 用最主要的是解决参数传递问题。应用程序之间使用中间寄存器及数据栈来传递参数,其中, 第一个到第四个参数使用 R0-R3,多于四个参数的使用数据栈进行传递。这样,接收参数 的应用程序必须知道参数的个数。
但是,在应用程序被调用时,一般无从知道所传递参数的个数。不同语言编写的应用程序在调用时可以自定义参数传递的约定,使用具有一定意义的形式来传递,可以很好地解决
参数个数的问题。常用的方法是把第一个或最后一个参数作为参数个数(包括个数本身)传 递给应用程序。
四、实验过程
1)打开Embest IDE Pro软件,选择菜单项File-->New Workspace,系统弹出对话框,创
2
建名为explasm的新工程,并同时创建一个与工程名相同的工作区。此时在工作窗口将打开该工作区和工程。
2)编写源代码文件并分别保存为randtest.c,random.s和ldscript,并把它们加入到工程里面。
3)基本配置:
选择菜单项Project-->Settings,弹出工程设置对话框,在工程设置对话框中,选择Processor设置对话框,选择ARM7对目标板所用处理器进行配置。
3
4)生成目标代码:
选择菜单项Build-->Build xxx_a.s,生成目标代码。 5)调试设置:
使用快捷键Alt+F7,弹出设置对话框,在工程设置对话框中,选择Remote设置对话框,对相应模块进行配置。按照编译 → 汇编器配置→链接器配置→调试器配置设置新工程,并编译、链接工程。
6)下载调试文件,打开memory/register/watch/variable/call stack 窗口,单步执行程序。通过以上窗口,跟踪程序运行,观察分析运行结果,通过实验学会使 用Embest IDE 进行应用程序的开发与调试;
五、实验程序
汇编语言中对a,b,c,d,e,f进行赋值,调用C语言进行运算,并输出结果 具体源代码如下:
randtest.c文件: ;c语言程序
int SUM(int result,int a,int b,int c,int d,int e,int f){
;定义SUM函数
return result = a+b+c+d+e+f; ;输出a+b+c+d+e+f的值 }
random.s文件: .global start .text
;ARM汇编程序
;定义全局变量START
;定义文本区 ;声明调用SUM函数
4
.extern SUM
start:
;R0=0 ;R1=1 ;R2=2 ;R3=3
;堆栈指针SP地址指向0x40001000 ;R4=4 ;R5=5 ;R6=6
MOV R0,#0 MOV R1,#1 MOV R2,#2 MOV R3,#3
LDR SP,=0X40001000 MOV R4,#4 MOV R5,#5 MOV R6,#6
STMFD SP!,{R4,R5,R6} ;将R4,R5,R6保存数据保存在堆栈指针SP中
BL SUM
.end
ldscript文件: ;脚本文件 SECTIONS {
.=0X0;
.TEXT:{*(.TEXT)} .DATA:{*(.DATA)} .RODATA:{*(.RODATA)}
5
;调用SUM函数
}
.BSS:{*(.BSS)}
程序运行图如下:
汇编程序运行图
6
汇编调用C语言运行图
五丶心得体会
本次实验较为复杂,在实验时不仅要注意文件相互间调用问题,还需要对编程环境进行相关配置,稍有差错便无法完成程序间的调用,实验时需要格外细心,总体上在与同学相互交流和利用指导书的情况下顺利完成实验,希望下次继续努力。
7
因篇幅问题不能全部显示,请点此查看更多更全内容