《嵌 入 式 系 统》
实验报告
姓名: 学号: 班级:
2013年4月
实验一 ARM汇编指令实验1
一、实验目的
1.初步学会使用ADS1.2 开发环境及ARM软件模拟器; 2.通过实验掌握简单ARM汇编指令的使用方法。
二.实验设备
1.硬件:PC机;
2.软件:ADS1.2集成开发环境。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体系结构可以用两种方法存储字数据,分别称为大端格式和小端格式。
五.实验程序
1. 实验A参考程序 X EQU 45 :定义变量x,并赋值为45 Y EQU 64 :定义变量y,并赋值为64 STACK_TOP EQU 0x1000 :定义栈顶0x1000 AREA Example,CODE,READONLY :声明代码段 ENTRY :标识入口 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参考程序
X EQU 45 :定义变量x,并赋值为45 Y EQU 64 :定义变量y,并赋值为64 Z EQU 87 :定义变量z,并赋值为87 STACK_TOP EQU 0X1000 :定义堆栈顶0x1000 AREA HUXIANG,CODE,READONLY : 声明代码段,只读 ENTRY : 标识入口 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 :结束
六.实验结果及分析
1. 程序A的实验结果截图如下:
实验分析;
本实验使用LDR、STR、MOV等指令访问寄存器和存储单元,使用堆栈和寄存器R0,R1存储变量。
2. 程序B的实验结果截图如下:
实验分析:
本实验使用ADD、SUB、LSL、LSR、AND、ORR等指令,完成基本数学/逻辑运算。