嵌入式系统实验报告模板

  • 格式:doc
  • 大小:45.50 KB
  • 文档页数:3

《嵌 入 式 系 统》
实验报告

姓名:
学号:
班级:

湖南工业大学
电气与信息工程学院

2013年4月
实验一 ARM汇编指令实验1
一、实验目的
1.初步学会使用Embest IDE for ARM 开发环境及ARM软件模拟器;
2.通过实验掌握简单ARM汇编指令的使用方法。

二.实验设备
1.硬件:PC机;
2.软件:Embest IDE 2004集成开发环境。Windows98/2000/NT/XP。

三.实验内容
1.熟悉开发环境的使用,并使用LDR/STR和MOV等指令访问寄存器或存储单元。
2.使用ADD/SUB/LSL/LSR/AND/ORR等指令,完成基本数学/逻辑运算。

四.实验原理
ARM处理器共有37个寄存器:31个通用寄存器,包括程序计数器(PC),这些寄存器都
是32位;6个状态寄存器,这些寄存器也是32位,但只使用了其中的12位。
1.ARM通用寄存器
通用寄存器(R0~R15)可分为3类,即不分组寄存器R0~R7.分组寄存器R8~R14.程序
计数器R15。
2. 存储器格式
ARM体系结构将存储器看作是从零地址开始的字节的线性组合。字节0~3存放第一个字,
字节4~7存放第2个字,以此类推。
ARM体系结构可以用两种方法存储字数据,分别称为大端格式和小端格式。
3. GNU基础知识
Embest IDE集成了GNU汇编器as、编译器gcc和链接器ld。因此,编写程序要符合
CNU的语法和规则。关于as.gcc和ld的具体使用,请参照Embest IDE所带的电子文档
ProgRef.chm。


实验程序

1. 实验A参考程序
.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. 实验B参考程序
.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

六.实验结果及分析