版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、电子科技大学 实 验报告课程名称微处理器系统结构与嵌入式系统设计实验名称ARM汇编基础实验任课教师实验教师姓名学号实验地点分组号时间年月日一、实验目的1. 熟悉并掌握常用ARM汇编指令2. 熟悉并掌握“C汇编”混合编程技术3. 熟练使用ARM软件开发调试工具Keil二、实验内容1. 学习使用Keil开发工具2. 实现累加运算功能(汇编编程,必做)3. 实现字符串拷贝功能(C汇编,必做)4. 实现求和运算功能(C汇编,必做)5. 实现冒泡排序算法(汇编编程,选做)微处理器系统结构与嵌入式系统设计实验报告三、实验步骤1.学习使用keil开发工具1. 点击“Keil uVision5”打开软件主窗口
2、。2. 点击Project-New uVision Project建立新工程。3. 为新工程命名。4. 为工程选择目标器件:三星S3C2440A。5. 选择是否添加S3C2440.s启动文件:C源程序工程选“是”,汇编源程序工程选“否”。6. 在工程Source Group上点右键选择添加新工程文件。7. 选择源文件类型。8. 录入源代码并保存。9. 对工程进行build或rebuild。10. 点击debug按钮进入/退出调试,忽略代码大小限制。使用单步调试, 仔细观察过程中 关键寄存器值的变化。2.各个实验步骤实验1.1: 用汇编语言实现1+2+.+N的累加(必做)1. 建立新工程,加入实
3、验1.2文件夹中的sum.s2. 用汇编补充算法核心部分,代码参考流程图如下图所示。3. 使用单步调试,仔细观察过程中关键寄存器值的变化。实验1.2 : C调用汇编实现字符串拷贝功能(必做)1. 建立新工程,加入实验1.3文件夹中的main.c和testfile.s(同一个工程下添加两个文件一起编译)。2. 补充完成源代码中缺失的部分,实现字符串拷贝功能3. 运行Debug进行调试实验1.3: 汇编调用C实现实现求和1+2+.+N(必做)1. 建立新工程,加入实验1.4文件夹中的sum.c和testfile.s(同一个工程下添加两个文件一起编译)。2. 补充完成源代码中缺失的部分,通过调用c函
4、数g()实现1+2+3+glovb1,结果存在R8中。3. 运行Debug进行调试实验1.4:ARM汇编实现冒泡算法(选做)1. 建立新工程,加入实验1.5文件夹中的maopao.s。2. 补充完成源代码中缺失的部分,实现冒泡排序功能。3. 运行Debug进行调试四、实验结果实验1.1用ARM汇编实现1+2+n的运算。在sum.s文件中,添加如下核心代码:-SUN_L1ADD R0,R1 ;R0,R1求和BVS SUM_END ;判断是否溢出,溢出则执行SUM_END程序,求和结束CMP R1,R2 ;R1、R2作差与0进行比较 BHS SUM_END ;R1=R2,则执行SUM_END程序,
5、否则向下继续执行ADD R1,#1 ;R1增1B SUN_L1 ;循环运行SUN_L1调试过程:1. 设置N的值并赋值给R02. 将R0=N的值复制给R23. 判断N是否为0或者,改变标志位C4. 将R0,R1分别初始化为0与15. 将R0+R1赋值给R06. 判断是否溢出与R1是否大于等于R2=N,改变标志位N7. 令R1+1赋值给R18. 通过B语句返回SUN_L1函数,实现循环相加9. 此时判断到R1大于等于R2=100,改变标志位10. 跳转到SUM_END函数,并将R0的结果保存在R8中11. 出栈并返回函数,完成1到N=100的累加,结果保存在R8中实验1.2 : C调用汇编实现字
6、符串拷贝功能(必做)在testfile.s文件中,添加如下核心代码:-StrcopyLDRB R2,R1,#1 ;R1对应源字符串首地址,利用寄存器间接寻址读取字符串到R2STRB R2,R0,#1 ;R0对应目的字符串首地址,利用寄存器间接寻址保存字符CMP R2,#0BNE strcopyMOV PC,LREND ;文件结束 调试过程1. 定义源字符串数组“aaaa”2. 定义目标字符串“bbbb”3. 进入汇编程序strcopy4. 将源字符串的首地址R1赋值给R2,并让R1加一位,指示源字符串下一位的地址5. 将R2地址代表的字符赋值给目标字符串组首地址R0的内容,并将R0加一位,指示
7、目标字符串的下一位地址6. 判断R2即源字符串地址内容是否为0,即是否复制完毕,并改变标志位7. 判断标志位是否复制完毕,未复制完毕,继续返回函数循环8. 复制完四次后改变标志位9. R2=0表示已复制完毕,返回主函数,可见已将源字符串复制到目标字符串中实验1.3: 汇编调用C实现实现求和1+2+.+N(必做)在testfile2.s文件中,添加如下核心代码:通过调用C函数g()实现1+2+3+glovbl,结果存在R8中。-MOV R0,#1 ;R0赋值为1MOV R1,#2 ;R1赋值为2MOV R2,#3 ;R2赋值为3MOV R3,#10 ;R3赋值为10BL g ;调用C语言中的函数
8、g()MOV R8,R0 ;将结果存在R8中B START- 调试过程:1. 将R0赋值为12. 将R1赋值为23. 将R2赋值为34. 将R3赋值为105. 通过BL指令调用C程序g6. 执行C程序中的a+b+c+d,并将结果赋值给R07. C程序执行完,回到主程序,并将R0的值赋值给R81) 在实验1中,通过伪指令EQU,定义N的值。编译运行后,通过跟踪、调试,实现了对1+2+n的累加运算。2) 在实验二中,编译运行后,经过跟踪调试,实现在C语言中调用函数strcopy.3) 在实验中,编译运行后,经过跟踪调试,实现了在汇编语言中调用C语言中的全局变量和全局函数。微处理器系统结构与嵌入式系
9、统设计实验报告六、实验总结在本次实验中,通过汇编程序直接对ARM处理器中的寄存器进行操作,掌握了汇编程序设计的基础知识。更全面、更深入地理解了ASM处理器的工作原理,为基于ARM处理器的嵌入式硬件开发奠定良好的基础。在嵌入式软件开发过程中,通常会使用ARM汇编语言和C语言在内的多种语言,通过本次实验,初步认识了ARM汇编语言与高级程序设计语言混合编程的原理和基本方法。七、实验思考题1.ADD替换成ADDS,SUB替换成SUBS有什么影响?答:ADD指令与ADDS指令的区别在于,ADDS指令运算过程中是带进位的,运算过程中将会根据结果来更新N、Z、C和V标记位,所以如果计算过程中需要进位,则二者
10、不可交换,若不涉及进位,则无影响。SUB与SUBS类似,是用来做减法计算的。2.MOV替换成MOVNE有什么影响?答:MOV是单纯的传送指令,而MOVNE需要先判断条件NE,即要上一步计算结果不相等才执行。3.STMIA换成STMIB,STMIA换成STMDA有什么区别?答:STMIA指令完成操作后地址递增,而STMIB是指令完成前递增。STMIA指令是完成后地址递增,STMDA指令完成操作而后地址递减。 4.思考用ARM汇编实现1+3+5+(2n+1)或者2+4+6+2n。答:奇数求和:设置初始值R0=0,R1=1,令R0=R0+R1,判断是否溢出,若是,结束程序,若否再判断R1是否大于等于2n+1,若是,结束程序,若否则令R1=R1+2,再回到程序开始出执行。偶数求和:只需要令初始R0=0,R1=2即可.5.实验3中如果去除汇编代码中的“EXPORT strcopy”会有什么现象,为什么?答:编译无法通过,如果去除则
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年学校“青蓝工程”师徒结对实施方案
- 2026年会议型酒店微信公众号运营方案
- 2026年某老旧小区弱电管线规整入地施工方案
- 2026湖南娄底市冷水江市事业单位引进高层次和急需紧缺人才22人备考题库及答案详解(夺冠系列)
- 2026锦泰财产保险股份有限公司重庆分公司招聘人伤查勘岗1人备考题库含答案详解(培优a卷)
- 2026安徽寿州控股集团有限公司人才引进11人备考题库含答案详解(满分必刷)
- 2026广东省三宜集团有限公司招聘19人备考题库附答案详解(突破训练)
- 2026安徽淮北师范大学招聘高层次人才66人备考题库完整答案详解
- 2026北京市职业病防治院第二批招聘38人备考题库参考答案详解
- 2026海南省建设投资集团有限公司招聘所属企业副总经理1人备考题库及完整答案详解
- 初中素养测试试题及答案
- 国家集采药品培训
- 中国文化与文学精粹知到课后答案智慧树章节测试答案2025年春西安交通大学
- 智慧校园全面建设方案
- 临床重型颅脑损伤患者目标体温管理个案护理
- 合同履行情况验收报告
- 玻璃瓶合同书模板
- TGDNAS 043-2024 成人静脉中等长度导管置管技术
- YD-T 1159-2016光波分复用(WDM)系统测试方法
- 桥梁施工工程安全风险分级管控方案路桥工程建设安全风险分级管控体系方案2019-2020版标准实施文件汇编
- 《陆上风电场工程概算定额》NBT 31010-2019
评论
0/150
提交评论