《嵌 入 式 系 统》
实验
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
课 题:
嵌入式系统
姓 名:
赵爱峰
班 级:
11电子(1)班
学 号:
20110310158
指导教师:
申屠浩
开课时间:
2013-2014学年第2学期
实验一 ARM汇编指令
一 实验目的
1.1 初步学会使用Embest IDE for ARM 开发环境及ARM软件模拟器;
1.2 通过实验掌握简单ARM汇编指令的使用方法。
二 实验设备
2.1 硬件:PC机;
2.2 软件:Embest IDE 2004集成开发环境。Windows98/2000/NT/XP;
2.3 ARM实验箱。
三 实验内容
3.1 熟悉开发环境的使用,并使用LDR/STR和MOV等指令访问寄存器或存储
单元
初级会计实务单元训练题天津单元检测卷六年级下册数学单元教学设计框架单元教学设计的基本步骤主题单元教学设计
;
3.2 使用ADD/SUB/LSL/LSR/AND/ORR等指令,完成基本数学/逻辑运算。
四 实验原理
ARM处理器共有37个寄存器:31个通用寄存器,包括程序计数器(PC),这些寄存器都是32位;6个状态寄存器,这些寄存器也是32位,但只使用了其中的12位。
4.1 ARM通用寄存器
通用寄存器(R0~R15)可分为3类,即不分组寄存器R0~R7.分组寄存器R8~R14.程序计数器R15。
4.2存储器格式
ARM体系结构将存储器看作是从零地址开始的字节的线性组合。字节0~3存放第一个字,字节4~7存放第2个字,以此类推。
ARM体系结构可以用两种方法存储字数据,分别称为大端格式和小端格式。
4.3 GNU基础知识
Embest IDE集成了GNU汇编器as、编译器gcc和链接器ld。因此,编写程序要符合CNU的语法和规则。关于as.gcc和ld的具体使用,请参照Embest IDE所带的电子文档ProgRef.chm。
五 实验程序
使用LDR/STR和MOV等指令访问寄存器或存储单元,实现数据的加法运算:
x equ 45 /* 定义变量x并赋值为45*/
y equ 64 /* 定义变量y,并赋值为64*/
STACK_TOP equ 0x1000 /* 定义栈顶0X1000*/
AREA HHHH,CODE,READONLY /* 声明代码段HHHH,只读属性*/
ENTRY /* 伪指令标识程序入口点*/
start /* 程序代码开始标志*/
MOV sp,#STACK_TOP
MOV r0,#x /* 变量x的值放入R0*/
STR r0,[sp] /* 将R0的值传送到以SP值为地址的堆栈中*/
MOV r0,#y /* 变量y的值放入R0*/
LDR r1,[sp] /* 将堆栈中的数传送到R1*/
ADD r0,r0,r1 /* 将寄存器R0和R1的值相加,结果保存到R0*/
STR r0,[sp] /* 将R0的值传送到以SP值为地址的堆栈中*/
Stop
b stop /* 程序结束,进入死循环*/
End
2.使用指令,完成基本数学/逻辑运算:
X EQU 45 /* 定义变量X,并赋值为45*/
Y EQU 64 /* 定义变量Y并赋值为64*/
Z EQU 87 /* 定义变量Z并赋值为87*/
STACK_TOP EQU 0X1000 /* 定义栈顶0X1000*/
AREA HHHHH,CODE,READONLY /* 声明代码段HHHHH,只读属性*/
ENTRY /* 伪指令标识程序入口点*/
START /* 程序代码开始标志*/
MOV R0,#X /* 变量X的值放入R0*/
MOV R0,R0,LSL#8 /* 将R0的值左移8位*/
MOV R1,#Y /* 变量Y的值放入R1*/
ADD R2,R0,R1,LSR#1 /* 将R1的值右移1位再和R0相加,结果存在R2*/
MOV SP,#0X1000
STR R2,[SP] /* 将R2的值传送到以SP值为地址的堆栈中*/
MOV R0,#Z /* 变量Z的值放入R0*/
AND R0,R0,#0XFF /* R0与上0XFF,取低八位*/
MOV R1,#Y /* 变量Y的值放入R1*/
ADD R2,R0,R1,LSR#1 /* 将R1的值右移1位再和R0相加,结果存在R2*/
LDR R0,[SP] /* 以SP值为地址的堆栈值传送到R0*/
MOV R1,#0X01 /* 将OX01传送到R1*/
ORR R0,R0,R1 /* 将R0和R1逻辑或,结果存在R0*/
MOV R1,R2 /* 将R2的值传送到R1*/
ADD R2,R0,R1,LSR#1 /* 将R1的值右移1位再和R0相加,结果存在R2*/
STOP
B STOP *程序结束,死循环*/
END
六 实验结果及分析
(一)实验1:
(图一)
实验一结论:
使用LDR/STR和MOV等指令访问寄存器或存储单元,实现数据的加法运算,先定义变量,然后用到堆栈,将两个数相加后保存。
(二)实验2:
(图二)
实验二结论:
用ADD/SUB/LSL/LSR/AND/ORR等指令,来完成基本的数学/逻辑运算,先定义变量,然后将R0左移保存,再将R1中的Y变量除以2,加上R0保存在R2,并将Z变量保存到R0取低八位,将变量Y放入R1,除以2再加R0存在R2,最后将R1的值除以2再加上R0存在R2中来完成基本计算。
七 心得与体会
这学期接触了ARM9,无论是理论还是上机,都有些生疏。但好在课堂上先进行了一些知识的铺垫,并且和曾经学得C语言相结合,对于代码的理解稍微好点。当然实验的成功也离不开老师的指导与演示,在此非常感谢老师。