湖南工业大学ARM实验报告

上传人:ali****an 文档编号:119207194 上传时间:2020-01-08 格式:DOC 页数:10 大小:449.51KB
返回 下载 相关 举报
湖南工业大学ARM实验报告_第1页
第1页 / 共10页
湖南工业大学ARM实验报告_第2页
第2页 / 共10页
湖南工业大学ARM实验报告_第3页
第3页 / 共10页
湖南工业大学ARM实验报告_第4页
第4页 / 共10页
湖南工业大学ARM实验报告_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《湖南工业大学ARM实验报告》由会员分享,可在线阅读,更多相关《湖南工业大学ARM实验报告(10页珍藏版)》请在金锄头文库上搜索。

1、ARM嵌入式系统原理及应用开发实验报告学院:电气与信息工程学院班级:电子信息1204 指导老师:谭会生 姓名: 学号: 实验一:ARM汇编指令使用实验基本数学/逻辑运算一、实验目的1初步学会使用ARM ADS / Embest IDE for ARM 开发环境及ARM软件模拟器。2通过实验掌握数据传送和基本数学/逻辑运算的ARM汇编指令的使用方法。二、实验设备1硬件:PC机。2软件:ADS 1.2 / Embest IDE 200X集成开发环境。三、实验内容熟悉ADS 1.2 / Embest IDE 200X开发环境的使用,使用LDR/STR和MOV等指令访问寄存器或存储单元,实现数据的加法

2、运算。具体实验参考程序如下: 四实验操作步骤1新建工程。先建立一个实验文件夹,如EARMSYarmasm1;然后运行Embest IDE集成开发环境,选择FileNew Workspace菜单项,弹出一个对话框,输入工程名armasm1a/armasmlb等相关内容;最后单击OK按钮,将创建一个新工程,并同时创建一个与工程名相同的工作区。此时在工作区窗口将能打开该工作区和工程。2建立源文件。选择FileNew菜单项,弹出一个新的、没有标题的文本编辑窗口,输入光标位于窗口中第一行,按照实验参考程序编辑输入源文件代码。编辑完后,保存文件armasmla. s。1)armasmla. s源程序:/*

3、 armasm1a.s */.EQU X, 45 /*定义变量X,并赋值为45*/.EQU Y, 64 /*定义变量Y,并赋值为64*/.EQU STACK_TOP, 0X1000 /*定义栈顶0X1000*/.GLOBAL _START.TEXT _START: /*程序代码开始标志*/ MOVSP, #STACK_TOP MOV R0, #X /*X的值放入R0*/ STR R0, SP/*R0的值保存到堆栈*/ MOV R0, #Y /*Y的值放入R0*/ LDR R1, SP/*取堆栈中的数到R1*/ADDR0, R0, R1STR R0, SPSTOP: B STOP /*程序结束,

4、进入死循环*/.END2)使用ADD/SUB/LSL/LSR/AND/ORR等指令,完成基本数学/逻辑运算。具体实验参考程序如下:/* armasm1b.s */.EQUX, 45/*定义变量X,并赋值为45*/.EQUY, 64/*定义变量Y,并赋值为64*/.EQU Z, 87/*定义变量Z,并赋值为87*/.EQUSTACK_TOP, 0X1000/*定义栈顶0X1000*/.GLOBAL _START.TEXT_START: /*程序代码开始标志*/ MOV R0, #X /*X的值放入R0*/ MOVR0, R0, LSL #8/*R0的值乘以2的8次方 */ MOV R1, #Y

5、/*Y的值放入R1*/ADDR2, R0, R1, LSR #1 /*R1的值除以2再加上R0后的值放入R2*/MOVSP, #0X1000STR R2, SP MOV R0, #Z /*Z的值放入R0*/ANDR0, R0, #0XFF /*取R0的低八位*/MOV R1, #Y /*Y的值放入R1*/ADDR2, R0, R1, LSR #1/*R1的值除以2再加上R0后的值放入R2*/LDRR0, SP/*Y的值放入R1*/MOVR1, #0X01ORRR0, R0, R1MOV R1, R2 /*Y的值放入R1*/ADD R2, R0, R1, LSR #1/*R1的值除以2加上R0的

6、值放入R2*/STOP: B STOP /*程序结束,进入死循环*/.END3添加源文件。选择ProjectAdd To ProjectFile项或单击工程管理窗口中的相应右键快捷菜单命令,打开文件选择对话框,在工程目录下选择刚才建立的源文件armasmla.s/armasmlb.s。4基本设置。选择ProjectSettings菜单项或按下快捷键Alt+F7,弹出工程设置对话框;在工程设置对话框中选择Processor属性页,按照使用要求对目标板所用处理器进行设置。5生成目标代码。选择BuildBuild armasmla菜单项或按下快捷键F7,生成目标代码。此步骤也可以通过单击工具栏上相应

7、按钮来完成。6调试设置。选择选择ProjectSettings菜单项或按下快捷键Alt+F7,弹出工程设置对话框;在工程设置对话框中,若选择Remote页面则对调试设备模块进行设置;若选择Debug页面则对调试模块进行设置。7选择DebugRemote Connect连接软件仿真器,执行Download命令下载程序,并打开寄存器窗口。8打开存储器窗口,观察地址0x80000x801F的内容以及地址0xFF00xFFF的内容。9单步执行程序,并观察和记录寄存器与存储器值的变化。五、实验报告 执行-START前将45赋值给X,将64赋值给Y,并定义栈顶为0X00001000, 执行MOVsp, #

8、stack_top后sp:0x00001000, 执行 MOV r0, #x后r0:0x0000002d 执行MOV r0, #y 后r0:0x00000040 LDRr1, sp取堆栈中的数到R1 ADDr0, r0, r1 执行前r0:0x0000002d r1:0x00000040 执行后:r0:0x0000006d最终实现了两个数字的相加。六.实验总结 本次实验主要是熟悉ARM汇编指令和学习使用ARM ADS / Embest IDE for ARM 开发环境及ARM软件模拟器。本次为验证试验,通过本次实验掌握了基本的汇编语句,实现了基本的加法运算和基本的数学/逻辑运算。在实验过程中记

9、录了在但不运行时有关寄存器和存储器的值,经过查询分析,查看寄存器和存储器的值,检查结果是否正确;通过这次实验熟练掌握了软件的操作和使用,学到了很多。实验二 ARM汇编指令使用实验存储区数据块的传送一、实验目的1熟悉ARM ADS 1.2 / Embest IDE for ARM 开发环境及ARM软件模拟器的使用。2通过实验掌握使用LDM/STM、B、BL等指令完成较为复杂的存储区访问和分支程序的方法,学习使用条件码,加强对CPSR的认识。二、实验设备1硬件:PC机。2软件:ADS 1.2 / Embest IDE 200X集成开发环境。三、实验内容设计并调试一个存储区数据块的传送程序,具体数据

10、块的传送要求为:将数据从源数据区snum复制到目标数据区dnum,数据的个数num假定为20,复制时以8个字为单位进行,对于最后不足8个字的数据,以字为单位进行复制。用ARM汇编语言设计该数据块复制程序的设计思想如下:先将源数据区的起始地址、目标数据区的起始地址以及数据个数赋给选定的寄存器R0、R1、R2,再根据每次批量/单个复制数据的个数R3确定用于数据复制的中间寄存器R4R11,之后先将源数据区的若干个数据批量装载到中间寄存器中,再将中间寄存器的数据批量存储到目的数据存储区,随后进行数据是否复制完毕的判断,若未复制完毕,则修改有关操作数据地址,并重复前面的数据复制操作,否则,终止操作,程序

11、结束。四、实验操作步骤1新建工程。先建立一个实验文件夹,如EARMSYarmasm2;然后运行Embest IDE集成开发环境,选择FileNew Workspace菜单项,弹出一个对话框,输入工程名ARMcode等相关内容;最后单击OK按钮,将创建一个新工程,同时创建一个与工程名相同的工作区。此时在工作区窗口将打开该工作区和工程。2建立源文件。选择FileNew菜单项,弹出一个新的、没有标题的文本编辑窗口,输入光标位于窗口中第一行,按照实验参考程序编辑输入源文件代码。编辑完后,保存文件armasm2.s。.GLOBAL _START.TEXT.EQU NUM, 20 /*定义需要复制的字数据

12、个数NUM为20*/_START: LDR R0, =SRC /*将R0指向源数据区的起始地址*/ LDR R1, =DST /*将R1指向源数据区的起始地址*/ MOV R2, #NUM /*将需要复制的字数据个数存放在R2中*/ MOV SP, #0X400 /*将堆栈指针SP指向#0X400*/ BLKCOPY: MOVS R3, R2, LSR #3 /*R2的值除以8的结果存入R3*/ BEQ COPYWORDS /*若Z=1,则转COPYWORDS*/ STMFD SP!, R4-R11 /*将R4R11的内容存入堆栈进行保护*/OCTCOPY: LDMIA R0!, R4-R11

13、 /*从源数据区装载8个字数据到R4R11*/ STMIA R1!, R4-R11 /*将R4R11中的8个字数据存入目的数据区*/ SUBS R3, R3, #1 /*每复制一次R3减1*/ BNE OCTCOPY /*若R3不等于0,则转移到OCTCOPY*/ LDMFD SP!, R4-R11 /*将堆栈内容恢复到R4R11*/COPYWORDS: ANDS R2, R2, #7 /*计算需复制的奇数个字的个数*/ BEQ STOP /*若R2=0则停止*/WORDCOPY: LDR R3, R0, #4 /*将源数据区的一个字装载至R3*/ STR R3, R1, #4 /*将R3中的数据存到目的数据区*/ SUBS R2, R2, #1 /*数据传输控制计数器减1*/ BNE WORDCOPY /*若R2不等于0,则转移到WORDCOPY*/STOP:

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号