电子科技大学微嵌实验最新版.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微处理器系统结构与嵌入式系统设计实验报告 电子科技大学 实 验 报 告 修正了MOOC和旧版答案的错误,代码使用Keil uVision5均已调试通过。 课程名称 微处理器系统结构与嵌入式系统设计 实验名称 ARM基础编程实验 任课教师 实验教师 姓名 学号 实验地点 分组号 时间 年 月 日 实验目的 熟悉并掌握常用ARM汇编指令 熟悉并掌握“C+汇编”混合编程技术 熟练使用ARM软件开发调试工具Keil 实验内容 学习使用Keil开发工具 使用ARM汇编语言,编程实现1+2+……+N累加运算功能 使用C调用汇编函数,实现字符串拷贝功能 使用汇编调用C函数,实现求和运算功能 使用ARM汇编语言,实现冒泡排序算法(选做) 实验步骤 实验1.1:运行Keil,建立工程文件,单步运行调试演示示例程序,深刻理解每一条指令,观察寄存器,内存空间的变化。 实验1.2:用汇编语言实现1+2+...+N的累加: 建立新工程,加入实验1.2文件夹中的sum.s。 用汇编补充算法核心部分,代码参考流程图如下图1.1所示。 使用单步调试,仔细观察过程中关键寄存器值的变化。 R0暂存累加和R1自增 R0暂存累加和 R1自增1 图1.1 实验1.3:C调用汇编实现字符串拷贝功能: 建立新工程,加入实验1.3文件夹中的main.c和testfile.s(同一个工程下添加两个文件一起编译)。 补充完成源代码中缺失的部分,分别实现 拷贝源字符串的一个字节到R2中; 将拷贝的字节复制到目标空间。 运行Debug进行调试。 实验1.4:汇编调用C实现求和1+2+...+10: 建立新工程,加入实验1.4文件夹中的sum.c和testfile.s(同一个工程下添加两个文件一起编译)。 补充完成源代码中缺失的部分,通过调用c函数g()实现1+2+3+glovb1,结果存在R8中。 运行Debug进行调试 实验1.5:ARM汇编实现冒泡算法: 建立新工程,加入实验1.5文件夹中的maopao.s。 补充完成源代码中缺失的部分,实现冒泡排序功能。 运行Debug进行调试 实验结果 实验1.2:用汇编语言实现1+2+...+N的累加 核心代码如下: ADD R0,R1 BVS SUM_END CMP R1,R2 BHS SUM_END ADD R1,#1 B SUN_L1 图1.2 可以看见最终结果显示在寄存器R8处,十六进制为13BA,转换成十进制为5050,实现了累加功能。 实验1.3:C调用汇编实现字符串拷贝功能 核心代码如下: LDRB R2,[R1],#1 ;拷贝源字符串的一个字节 STRB R2,[R0],#1 ;将拷贝的字节复制到目标空间 图 1.3 图 1.4 可以看出拷贝前srcstr是”aaaa”,dststr是”bbbb”,拷贝后srcstr是”aaaa”,dststr是”aaaa”,实现了字符串拷贝功能。 实验1.4:汇编调用C实现求和1+2+...+10 核心代码如下: MOV R0,#1 MOV R1,#2 MOV R2,#3 MOV R3,#10 BL g MOV R8,R0 图1.5 可以看出最终结果显示在寄存器R8处,十六进制表示为0010,转换为十进制为0x10 实验1.5:ARM汇编实现冒泡算法 代码如下: AREA Sort,CODE,READONLY ENTRY start MOV R4,#0 LDR R6,=src ADD R6,R6,#len LDR R7,=src ;初始化R4作为循环计数器 inner2 MOV R1,R7 CMP R6,R7 BLE outer ;将每次循环开始,正确设置R1的值为数组开始地址 ;如果所有数字均已排序,即R6=R7输出跳转到outer函数 inner LDR R2,[R1] LDR R3,[R1,#4] CMP R2,R3 BGT exchange ;判断相邻数字是否符合规律,不符合跳转到exchange函数 inner1 ADD R1,R1,#4 CMP R1,R6 BLT inner ADD R4,R4,#4 CMP R4,#len BLE subtraction exchange STR R3,[R1] STR R2,[R1,#4] B inner1 subtraction SUB R6,R6,#4 B inner2 outer LDR R1,=src src DCD 2,4,10,8,14,1,20 AREA Array,DATA,READWRITE len EQU 7*4 END 图1.6 排序前 在star函数中获得R6地址

文档评论(0)

kbook + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档