湖南工业大学ARM实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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等指令访问寄存器或存储单元,实现数据的加法运算。具体实验参考程序如下:

四.实验操作步骤

1.新建工程。先建立一个实验文件夹,如E\ARMSY\armasm1;然后运行Embest IDE集成开发环境,选择File→New Workspace菜单项,弹出一个对话框,输入工程名armasm1a/armasmlb等相关内容;最后单击OK按钮,将创建一个新工程,并同时创建一个与工程名相同的工作区。此时在工作区窗口将能打开该工作区和工程。

2.建立源文件。选择File→New菜单项,弹出一个新的、没有标题的文本编辑窗口,输入光标位于窗口中第一行,按照实验参考程序编辑输入源文件代码。编辑完后,保存文件armasmla. s。

1)armasmla. s源程序:

/* armasm1a.s */

.EQU X, 45 /*定义变量X,并赋值为45*/

.EQU Y, 64 /*定义变量Y,并赋值为64*/

.EQU STACK_TOP, 0X1000 /*定义栈顶0X1000*/

.GLOBAL _START

.TEXT

_START: /*程序代码开始标志*/

MOV SP, #STACK_TOP

MOV R0, #X /*X的值放入R0*/

STR R0, [SP] /*R0的值保存到堆栈*/

MOV R0, #Y /*Y的值放入R0*/

LDR R1, [SP] /*取堆栈中的数到R1*/

ADD R0, R0, R1

STR R0, [SP]

STOP: B STOP /*程序结束,进入死循环*/

.END

2).使用ADD/SUB/LSL/LSR/AND/ORR等指令,完成基本数学/逻辑运算。具体实验参考程序如下:

/* armasm1b.s */

.EQU X, 45 /*定义变量X,并赋值为45*/

.EQU Y, 64 /*定义变量Y,并赋值为64*/

.EQU Z, 87 /*定义变量Z,并赋值为87*/

.EQU STACK_TOP, 0X1000 /*定义栈顶0X1000*/

.GLOBAL _START

.TEXT

_START: /*程序代码开始标志*/

MOV R0, #X /*X的值放入R0*/

MOV R0, R0, LSL #8 /*R0的值乘以2的8次方*/

MOV R1, #Y /*Y的值放入R1*/

ADD R2, R0, R1, LSR #1 /*R1的值除以2再加上R0后的值放入R2*/

MOV SP, #0X1000

STR R2, [SP]

MOV R0, #Z /*Z的值放入R0*/

AND R0, R0, #0XFF /*取R0的低八位*/

MOV R1, #Y /*Y的值放入R1*/

ADD R2, R0, R1, LSR #1 /*R1的值除以2再加上R0后的值放入R2*/

LDR R0, [SP] /*Y的值放入R1*/

MOV R1, #0X01

ORR R0, R0, R1

MOV R1, R2 /*Y的值放入R1*/

ADD R2, R0, R1, LSR #1 /*R1的值除以2加上R0的值放入R2*/ STOP: B STOP /*程序结束,进入死循环*/

.END

3.添加源文件。选择Project→Add To Project→File项或单击工程管理窗口中的相应右键快捷菜单命令,打开文件选择对话框,在工程目录下选择刚才建立的源文件armasmla.s/armasmlb.s。

4.基本设置。选择Project→Settings…菜单项或按下快捷键Alt + F7,弹出工程设置对话框;在工程设置对话框中选择Processor属性页,按照使用要求对目标板所用处理器进行设置。

5.生成目标代码。选择Build→Build armasmla菜单项或按下快捷键F7,生成目标代码。此步骤也可以通过单击工具栏上相应按钮来完成。

6.调试设置。选择选择Project→Settings…菜单项或按下快捷键Alt + F7,弹出工程设置对话框;在工程设置对话框中,若选择Remote页面则对调试设备模块进行设置;若选择Debug 页面则对调试模块进行设置。

7.选择Debug→Remote Connect连接软件仿真器,执行Download命令下载程序,并打开寄存器窗口。

8.打开存储器窗口,观察地址0x8000~0x801F的内容以及地址0xFF0~0xFFF的内容。

9.单步执行程序,并观察和记录寄存器与存储器值的变化。

五、实验报告

执行-START前将45赋值给X,将64赋值给Y,并定义栈顶为0X00001000, 执行MOV sp, #stack_top后sp:0x00001000,

执行 MOV r0, #x后r0:0x0000002d

执行MOV r0, #y 后r0:0x00000040

LDR r1, [sp] 取堆栈中的数到R1

ADD r0, r0, r1 执行前r0:0x0000002d r1:0x00000040

执行后:r0:0x0000006d

最终实现了两个数字的相加。

六.实验总结

本次实验主要是熟悉ARM汇编指令和学习使用ARM ADS / Embest IDE for ARM 开发环境及ARM软件模拟器。本次为验证试验,通过本次实验掌握了基本的汇编语句,实现了基本的加法运算和基本的数学/逻辑运算。在实验过程中记录了在但不运行时有关寄存器和存储器的值,经过查询分析,查看寄存器和存储器的值,检查结果是否正确;通过这次实验熟练掌握了软件的操作和使用,学到了很多。

相关文档
最新文档