嵌入式ARM上机实验 汇编和C语言混合编程 - 图文

更新时间:2023-10-31 13:56:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

辽宁工程技术大学上机实验报告 成绩 课程名称 实验题目 院系 姓名 软件学院 王翀 ARM体系结构 实验三 汇编和C语言混合编程 专业 学号 嵌入式软件 班级 软件-2班 0920010214 实验日期 2012-5-30 实验 目的 1、熟悉ADS1.2软件开发环境。 2、掌握汇编程序访问C程序变量的方法。 3、掌握汇编程序调用C程序的方法。 4、掌握ARM汇编指令和C程序调用汇编程序。 1、阅读ARM第4.8节汇编语言和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语言程序中可以使用关键字 实验 内容 (续) __asm来加入一段汇编语言的程序。 3、 C程序中内嵌汇编指令 在C语言中嵌入的ARM汇编需要注意一些问题:在汇编指令中,可以使用表达式,使用逗号“,”作为分隔符 。如果一条指令占用了多行,那么应该使用符号“\\”续行,如果一行中有多个汇编指令,那么应该使用“;”将多个指令隔开。汇编中不能再使用“;”作为注释行的开头,而应该使用C语言中的“”或者“//”进行注释,不要企图使用一个物理寄存器去改变一个C变量;对于内嵌的汇编代码用到的寄存器,编译器在编译时会自动加入保存和恢复这些寄存器的代码而不用用户去管理,除了寄存器CPSR和SPSR,其他寄存器都必须先赋值然后再读取,否则编译时将出现错误。 三、实验步骤 1、建立一个新工程 2、编辑.C源程序: #include int g(int a,int b,int c,int d,int e) { return a+b+c+d+e; } 3、S源程序: preserve8 area reset,code,readonly entry code32 export reset;arm_add import g ldr sp,=0x31000100 str lr,[sp,#-4]! mov r0,#1 mov r1,#2 mov r2,#3 mov r3,#4 mov r4,#5 str r4,[sp,#-4]! bl g ;调用c语言程序 add sp,sp,#4 ; ldr pc,[sp],#4 End 4、程序添加到工程文件中 5、对源程序进行调试 一.实验数据 1、.C源程序: #include int g(int a,int b,int c,int d,int e) { return a+b+c+d+e; } 2、.S源程序: preserve8 area reset,code,readonly entry code32 export reset;arm_add import g ldr sp,=0x31000100 str lr,[sp,#-4]! mov r0,#1 mov r1,#2 mov r2,#3 mov r3,#4 mov r4,#5 str r4,[sp,#-4]! bl g ;调用c语言程序 add sp,sp,#4 ; ldr pc,[sp],#4 End 实验 分析 二、实验截图 1、建立一个新工程 图1 2、添加源文件 图2 3、点debug进入AXD 图3 3、step in(1) 图4 4. step in(2) 图5 5、step in(3) 图6 6、step in(4) 图7

本文来源:https://www.bwwdw.com/article/did2.html

Top