arm实验ARM汇编和C语言混合编程.doc

成绩辽宁工程技术大学上机实验报告课程名称汇编语言程序设计基于ARM体系结构实验题目ARM汇编和C语言混合编程院系软件学院专业软件工程班级姓名学号实验日期实验目的 1.掌握汇编程序访问C程序变量的方法。 2.掌握汇编程序调用C程序的方法。 3.了解C程序调用汇编程序的方法。实验准备硬件PC机软件ADS1.2集成开发环境实验进度本次共有 2 个练习,完成 2 个。实验内容实验内容续 1建立一个新工程。2选择CPU。3添加启动代码。4选择开发工具。5建立汇编程序源文件。6建立分散加载文件和调试脚本文件。7将程序源文件添加到工程中。8设置编译链接控制选项。9编译链接工程。10调试工程。实验步骤1ARM汇编程序访问C变量(1)ADS1.2集成开发环境,建立工程test,编辑汇编源程序文件test1.s,和test2.o,将源程序文件添加到工程项目中。建立汇编程序访问所需的C源程序。(2)编译并链接程序,使用寄存器观察器和内存观察器,运用单步执行方式调试程序test1.s和test2.o,验证ARM汇编程序对C语言变量的访问。2汇编程序调用C程序要求汇编程序通过BL g调用C语言程序中的函数以实现5个数相减,其参数通过R0、R1、R2、R3和堆栈来传递。(1)汇编程序调用C程序的程序清单test3.s和test4.c。建立工程work,然后建立汇编程序test3.s及其调用程序test4.c,加入工程,重新编译并链接程序,使用寄存器观察器和内存观察器,运用单步执行方式调试程序,验证ARM汇编程序对C语言程序的调用。调试时使用step方式,注意观察寄存器的变化,执行到BL g指令时可通过step in方式,单步进入C语言程序。然后通过单步执行实现5个数相减,调用函数运行完毕后程序又回到汇编语言程序。整个调试过程演示了汇编语言程序调用C语言程序的过程。3C程序调用ARM汇编程序要求使C语言程序test6.c实现将源字符串srcstr复制到目标字符串dststr中,其中字符串复制函数strcopy由汇编程序实现,该段汇编程序在test5.s中。实验分析实验分析续实验分析续实验分析续1ARM汇编程序访问C变量程序代码test1.s preserve8 area reset,code,readonly entry code32 export armcode import globvararmcode ldr r1,globvar ldr r0,r1 add r0,r0,2 str r0,r1 mov pc,lr endtest2.cincludestdio.h int globvar3; int _main return 0; 实验截图分析在0 x8018的位置上实现了32。2汇编程序调用C程序程序代码test3.s area reset,code,readonly entry code32 export reset;arm_add import g ldr sp,0 x31000100 str lr,sp,-4 mov r0,20 mov r1,1 mov r2,2 mov r3,3 mov r4,4 str r4,sp,-4 bl g add sp,sp,4 ldr pc,sp,4 endtest4.cincludestdio.hint gint a,int b,int c,int d,int e return a-b-c-d-e;运行结果截图实验分析在ARM汇编语言程序中,将5个数分别存入寄存器中,然后通过调用C语言程序,进行相减,最后将结果存到R0中。3C程序调用ARM汇编程序程序代码test5.s area SCopy,code,readonly entry export strcopystrcopy ldrb r2,r1,1 strb r2,r0,1 cmp r2,0 bne strcopy mov pc,lr endtest6.cincludestdio.hextern void strcopychar * d,const char * s;int mainvoid const char * srcstrFirst string-souceSecond string-destinationBefore copyingn; printf sn sn,srcstr,dststr; strcopydststr,srcstr; printfAfter copyingn; printf sn sn,srcstr,dststr; return 0;运行截图由于自己的疏忽,截完图之后,没有保存到优盘,但是程序一定能运行,而且结果也能出来。运行时,将ARM Linker中Image entry point添加成R0 Base的地址即可运行。实验总结 本次试验主要是加深C语言和汇编混合编程的使用,在一步一步的调试的过程中加深了解并学会使用混合编程。加深了一些在课堂学到的ARM指令,学到了两种语言互相调用的方法。教师评语7

arm汇编和c语言混合编程实验报告,arm实验ARM汇编和C语言混合编程.doc相关推荐

  1. 周信东c语言实验二实验报告,周信东主编最新版C语言程序设计基础实验一实验报告.doc...

    周信东主编最新版C语言程序设计基础实验一实验报告.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我 ...

  2. Java1.使用二分搜索算法查找任意N个有序数列中的指定元素。 2.通过上机实验进行算法实现。 3.保存和打印出程序的运行结果,并结合程序进行分析,上交实验报告。 4.至少使用两种方法进行编程,直接查

    1.使用二分搜索算法查找任意N个有序数列中的指定元素. 2.通过上机实验进行算法实现. 3.保存和打印出程序的运行结果,并结合程序进行分析,上交实验报告. 4.至少使用两种方法进行编程,直接查找/递归 ...

  3. c语言递归算法实验报告,递归算法实验报告.docx

    递归算法实验报告 递归算法实验报告 篇一:递归算法的设计和实现的实验报告 班级学号 姓名 实验组别 试验日期 室温 报告日期成绩 报告内容:(目的和要求.原理.步骤.数据.计算.小结等) 实验名称:递 ...

  4. 数据结构实验报告,二叉树的基本操作(C语言)

    数据结构实验报告,二叉树的基本操作(C语言) 作者:命运之光 专栏:数据结构 目录 数据结构实验报告,二叉树的基本操作(C语言) 实验六 二叉树的基本操作 一.需求分析 二.概要设计 三.详细设计 四 ...

  5. 进程同步c语言实验报告,操作系统实验报告实验3-1

    操作系统实验报告 操作系统实验报告 实验3-1: Linux进程的创建与父子进程同步 1. 实验目的 (1)熟悉在C语言源程序中使用Linux所提供的系统调用界面的方法: (2)掌握Linux中进程的 ...

  6. c语言秒表实训报告实验结果,实验报告范文范本 -实习报告

    实验报告范文范本 -实习报告 实习报告 时间:2019-01-01 [www.unjs.com - 实习报告] 物理探究实验:影响摩擦力大小的因素 探究准备 技能准备: 弹簧测力计,长木板,棉布,毛巾 ...

  7. java面向对象编程基础实验报告_20155313 实验三《Java面向对象程序设计》实验报告...

    一.实验内容 XP基础 XP核心实践 相关工具 二.实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器>课程 2.完成实验.撰写实验报 ...

  8. c语言Dvv实验报告,电渗实验报告

    篇一:实验35电渗 实验35 电渗 一.目的 ①用电渗法测定SiO2对水的?电势 ②观察电渗现象,了解电渗法实验技术概要. 二.基本原理 电渗是胶体常见的电动现象的一种.早在1809年,就观察到在电场 ...

  9. c语言数据结构二叉树实验报告,数据结构实验三二叉树实验报告.doc

    数据结构实验三二叉树实验报告 数据结构实验报告 实验名称: 实验三--二叉树 学生姓名: XX 班 级: 班内序号: 学 号: 日 期: 1.实验要求 1.1实验目的 通过选择下面两个题目之一进行实现 ...

  10. 微型计算机广告牌实验报告,微型计算机实验报告1资料.doc

    实验报告 1. 实验名称 程序编译及调试 2. 实验目的 掌握汇编语言语句格式,程序结构,上机调试步骤和各种类型程序的设计方法.了解汇编语言的基本语法,汇编程序的功能和汇编,调试过程,伪指令,汇编语言 ...

最新文章

  1. PHP无状态对象,(PHP)基于Token的身份验证中对无状态的理解
  2. Service order description modify and save
  3. jquery上传图片_文件上传三种方式
  4. Redis面试复习大纲在手面试不慌,讲的明明白白!
  5. 下取整函数的含义_取整函数解读
  6. php中datetime,珍藏 PHP中DateTime的常用方法
  7. 最新Oracle 和 mysql 的对比参照----开发篇(转)
  8. 如何将两部手机内容互换_两部iPhone手机之间如何大量互传照片?
  9. navicat 备份 mysql 报错 1548 cannot load mysql.proc
  10. java之SpringMVC配置!配置!配置!
  11. python返回类型为anytype_python - Zeep的SOAP请求(Python) - 堆栈内存溢出
  12. 【Python练习】乌龟吃鱼小游戏
  13. 原厂PL7203大电流3A充电IC
  14. 网卡地址和ip地址的区别
  15. linux设备模型:固件设备及efi固件(平台)设备节点创建过程分析
  16. Linux 平台上的软件包管理
  17. 【android】项目案例(一)之超级课程表
  18. mysql405错误_mysql - 在框架内php调用某个方法, nginx 报 405错误 Status Code:405 Method Not Allowed...
  19. java中是什么意思_java中什么意思?
  20. 三立期货:掌财社重大事项停牌是利好吗?一般停多久?

热门文章

  1. 测试4年裸辞失业,面试17k的测试岗被按在地上摩擦,结局让我崩溃大哭....
  2. CSS3的@keyframes用法详解:
  3. 全国计算机等级考试.pdf,全国计算机等级考试试题49662.pdf
  4. 计算机等级一级考试上机试题,计算机等级考试一级上机试题
  5. ArcGIS Server出图之Dynamic Layers
  6. 《九》微信小程序中的自定义组件
  7. 计算2的100000次方
  8. 17未央,我备一曲离殇
  9. C++ 命名空间,也有叫名称空间
  10. 时间转化为字符串格式的方法