辽宁工程技术大学上机实验报告
成绩
课程名称实验题目院系姓名软件学院王
ARM体系结构实验三汇编和C语言混合编程专业学号嵌入式软件0920010214班级实验日期软件2班2012530
实验目的
1、熟悉ADS12软件开发环境。2、掌握汇编程序访问C程序变量的方法。3、掌握汇编程序调用C程序的方法。4、掌握ARM汇编指令和C程序调用汇编程序。1、阅读ARM第48节汇编语言和C语言交互编程。2、装有ADS集成开发环境的PC机。本次共有1个练习,完成1个。
实验准备实验进度
一、实验内容
1、在ADS中新建一个工程;2、选择CPU类型;3、添加启动代码;4、选择开发工具;5、建立汇编程序源文件;6、建立分散加载文件和调试脚本文件;7、将程序源文件添加到工程中;8、设置编译链接控制选项;9、编译链接工程;10、调试该工程。
实验内容
二、实验原理
1、ARM汇编程序访问C程序中的变量,可通过地址间接地访问C程序中声明为全局属性的变量,具体操作步骤如下:(1)在C程序中,将供ARM汇编程序访问的变量声明为全局变量。(2)ARM汇编程序中,在用伪指令IMPORT引入C程序中的全局变量。(3)用伪指令LDR读取这个全局变量的地址。(4)使用伪指令LDR读取这个全局变量的值。(5)在ARM汇编程序中使用这个全局变量。2、C程序中内嵌汇编指令在ARM的C语言程序中可以使用关键字
f__asm来加入一段汇编语言的程序。3、C程序中内嵌汇编指令在C语言中嵌入的ARM汇编需要注意一些问题:在汇编指令中,可以使用表达式,使用逗号“,”作为分隔符。如果一条指令占用了多行,那么应该使用符号“”续行,如果一行中有多个汇编指令,那么应该使用“”将多个指令隔开。汇编中不能再使用“;”作为注释行的开头,而应该使用C语言中的“”或者“”进行注释,不要企图使用一个物理寄存器去改变一个C变量;对于内嵌的汇编代码用到的寄存器,编译器在编译时会自动加入保存和恢复这些寄存器的代码而不用用户去管理,除了寄存器CPSR和SPSR,其他寄存器都必须先赋值然后再读取,否则编译时将出现错误。
三、实验步骤
1、建立一个新工程2、编辑C源程序:i
cludestdiohi
tgi
tai
tbi
tci
tdi
teretur
abcde3、S源程序:preserve8arearesetcodereado
lye
trycode32exportresetarm_addimportgldrsp0x31000100strlrsp4movr01movr12movr23movr34movr45strr4sp4blg调用c语言程序addspsp4ldrpcsp4E
d4、程序添加到工程文件中5、对源程序进行调试
实验内r