ARM汇编语言与C语言混编.docx

上传人:b****0 文档编号:9014943 上传时间:2023-05-16 格式:DOCX 页数:10 大小:572.84KB
下载 相关 举报
ARM汇编语言与C语言混编.docx_第1页
第1页 / 共10页
ARM汇编语言与C语言混编.docx_第2页
第2页 / 共10页
ARM汇编语言与C语言混编.docx_第3页
第3页 / 共10页
ARM汇编语言与C语言混编.docx_第4页
第4页 / 共10页
ARM汇编语言与C语言混编.docx_第5页
第5页 / 共10页
ARM汇编语言与C语言混编.docx_第6页
第6页 / 共10页
ARM汇编语言与C语言混编.docx_第7页
第7页 / 共10页
ARM汇编语言与C语言混编.docx_第8页
第8页 / 共10页
ARM汇编语言与C语言混编.docx_第9页
第9页 / 共10页
ARM汇编语言与C语言混编.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

ARM汇编语言与C语言混编.docx

《ARM汇编语言与C语言混编.docx》由会员分享,可在线阅读,更多相关《ARM汇编语言与C语言混编.docx(10页珍藏版)》请在冰点文库上搜索。

ARM汇编语言与C语言混编.docx

ARM汇编语言与C语言混编

成绩

辽宁工程技术大学上机实验报告

课程名称

汇编语言程序设计

实验题目

ARM汇编和C语言混合编程

院系

软件学院

专业

软件工程

班级

姓名

学号

实验日期

实验

目的

1.掌握汇编程序访问C程序变量的方法。

2.掌握汇编程序调用C程序的方法。

3.了解C程序调用汇编程序的方法。

实验

准备

1.环境准备:

(1)硬件:

PC机。

(2)软件:

ADS1.2集成开发环境。

2.知识准备:

(1)汇编语言访问C程序。

(2)汇编语言调用C程序。

实验

进度

本次共有3个练习,完成2个。

 

实验

内容

 

实验

内容

【实验内容】

1.建立一个新工程。

2.选择CPU。

3.添加启动代码。

4.选择开发工具。

5.建立汇编程序源文件。

6.建立分散加载文件和调试脚本文件。

7.将程序源文件添加到工程中。

8.设置编译链接控制选项。

9.编译链接工程。

10.调试工程。

【实验步骤】

1.ARM汇编程序访问C变量

(1)ADS1.2集成开发环境,建立工程test,编辑汇编源程序文件test1.s,和test2.o,将源程序文件添加到工程项目中。

建立汇编程序访问所需的C源程序。

(2)编译并链接程序,使用寄存器观察器和内存观察器,运用单步执行方式调试程序test1.s和test2.o,验证ARM汇编程序对C语言变量的访问。

2.汇编程序调用C程序

要求汇编程序通过BLg调用C语言程序中的函数以实现5个数相减,其参数通过R0、R1、R2、R3和堆栈来传递。

(1)汇编程序调用C程序的程序清单test3.s和test4.c。

建立工程work,然后建立汇编程序test3.s及其调用程序test4.c,加入工程,重新编译并链接程序,使用寄存器观察器和内存观察器,运用单步执行方式调试程序,验证ARM汇编程序对C语言程序的调用。

调试时使用step方式,注意观察寄存器的变化,执行到BLg指令时可通过stepin方式,单步进入C语言程序。

然后通过单步执行实现5个数相减,调用函数运行完毕后程序又回到汇编语言程序。

整个调试过程演示了汇编语言程序调用C语言程序的过程。

3.C程序调用ARM汇编程序

要求使C语言程序test6.c实现将源字符串srcstr复制到目标字符串dststr中,其中字符串复制函数strcopy由汇编程序实现,该段汇编程序在test5.s中。

实验

分析

 

实验

分析

 

实验

分析

 

实验

分析

 

实验

分析

 

实验

分析

 

实验

分析

 

实验

分析

 

【运行结果】

1.汇编语言访问C程序变量

图1.1定义变量

如图1.1所示,汇编语言用IMPORTGLOBVAR声明了一个变量与C语言中所声明的变更globvar所对应。

将其地址读入寄存器R1中。

使用ADD语句修改寄存器R0的值,再将修改后的R0值赋给变量,修改变量的值。

 

图1.2读入

如图1.2所示,将变更globvar的值读入寄存器R0中。

图1.3更改

如图1.3所示,将r0中的值修改即修改变更globvar的值。

 

图1.4赋值

如图1.4所示,将r0的值赋予变更,修改变量的值。

图1.5改变pc

如图1.5所示,将连接寄存器值送到pc改变指针,使程序跳回。

 

2.汇编语言调用C程序

图2.1加载

如图2.1所示,将32位立即数加载到pc指针里,给pc赋值。

图2.2保存返回地址

如图2.2所示,使用STR语句保存返回地址到连接寄存器里。

图2.3设置参数1

如图2.3所示,使用r0寄存器存放第一个参数。

图2.4设置参数2

如图2.4所示,使用r1寄存器存放第二个参数。

图2.5设置参数3

如图2.5所示,使用r2寄存器存放第三个参数。

图2.6设置参数4

如图2.6所示,使用r3寄存器存放第四个参数。

图2.7设置参数5

如图2.7所示,第五个数利用堆栈传递。

图2.8

如图2.8所示,前四个数利用寄存器存储,调整指针将第五个数放在堆栈段里。

图2.9跳转

如图2.9所示,利用bl语句调用C程序中的g。

图2.10c程序

如图2.10所示,调到C程序执行C语言,利用add语句和ldr语句调整数据栈指针并返回。

【遇到的问题】

实验一用的是书上给的代码,有错误运行不了,问了同学然后改了一些代码,后正确。

在汇编语言调用C程序时,执行完C语言程序后没能返回到汇编程序。

在代码中注释了ldrpc,[sp],#4指令,没能使指针返回。

实验

总结

本次试验主要是加深C语言和汇编混合编程的使用,在一步一步的调试的过程中加深了解并学会使用混合编程。

加深了一些在课堂学到的ARM指令,学到了两种语言互相调用的方法。

本次实验由于实验三做的不是很顺利,一直有错误没有改过来,所以没有达到完美。

教师

评语

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2