- 2
- 0
- 约3.08千字
- 约 6页
- 2017-01-17 发布于湖北
- 举报
嵌入式软件开发基础实验
学生:陈柏仲
班级:08电子2班
学号:200824121222
3·1 ARM 汇编指令实验1
一、实验目的
初步学会使用Embest IDE for ARM 开发环境及ARM软件模拟器。
通过实验掌握简单ARM汇编指令的使用方法。
二、实验设备
硬件:PC机。
软件:Emabest IDE Pro 2004 集成开发环境,Windows 98/2000/NT/XP。
三、实验内容
熟悉开发环境的使用,并使用LDR、STR和MOV等指令访问寄存器或存储单元。
使用ADD、SUB、LSL、LSR、AND和ORR等指令,完成基本数学逻辑运算。
四、实验原理
ARM处理器共有37个寄存器:
31个通用寄存器,包括程序计数器(PC)。这些寄存器都是32位。
6个状态寄存器。这些寄存器也是32位,但只使用了其中的12位。
这里简要介绍通用寄存器,关于状态寄存器的介绍,请参考3·2节“实验原理”部分
ARM通用寄存器
通用寄存器R0~R15可分为3类,即不分组寄存器(R0~R7)、分组寄存器(R8~R14
)和程序计数器(R15)。
不分组寄存器
R0~R7是不分组寄存器。这意味着所有处理器模式下,它们都访问一样的32位寄存器。
它们是真正的通用寄存器,没有体系结构所隐含的特殊用途。
分组寄存器
R8~R14是分组寄存器。它们每一个访问的物理寄存器取决于当前的处理器模式。若要
访问特定的物理寄存器而不依赖当前的处理器模式,则使用规定的名字
寄存器R8~R12各有两组物理寄存器:一组为FIQ模式,另一组为除了FIQ以外的所有模式。寄存器R0~R12没有任何指定的特殊用途。只是使用R8~R14来简单地处理中断。寄存器R13和R14各有6个分组的物理寄存器,1个用于用户模式和系统模式,其他5个分别用于5种异常模式。寄存器R13通用作堆栈指针,称作SP。每种异常模式都有自己的R13。寄存器R14用作子程序链接寄存器,也称作LR。
程序计数器
寄存器R15用作程序计数器(PC)。在本实验中,ARM核工作在用户模式,R0~R15可用。
存储器格式
ARM体系结构存储器看作是从零地址开始的字节的线性组合。字节0~3存放第1个字
,字节4~7存放第2个字,依此类推。
ARM体系结构可以用两种方法存储字数据,分别称为“大端格式”和“小端格式”。
大端格式:在这种格式中,字数据的高位字节存储在低地址中,而字数据的地位字节存放在高位地址中,如下所示。
小端格式:在这种格式中,字数据的高位字节存放在高地址中,而字数据的低位字节存放在低地址中,如下所示。
GNU基础知识
Embest IDE 集成了GNU汇编as、编译器gcc和链接器ld。因此,编写程序要符合GNU
的语法和规则。关于as、gcc和ld的具体使用,请参照Embest IDE所带的电子文档ProgRef.chm,在此不再赘述。这里简单介绍几点基本知识:
程序默认入口点为“_Start”,代码段默认起始地址为0x8000;
as常用伪操作符。
1).equ
.equ伪操作为数字常量、基于寄存器的值和程序中的标号定义一个字符名称。
语法格式
.equ symbol,expr
其中,expr为基于寄存器的地址值、程序中的标号、32位的地址常量或者32位的常量。Symbol为.equ伪操作为expr定义的字符名称。
示例
.equ Version ,“0.1”
2).global及.globl
. global声明一个符号可以被其他文件引用,相当于声明了一个全局变量。
.globl与.global相同。
语法格式
.global symbol
其中,symbol为声明的符号的名称。它是区别大小写的。
示例
.global MyAsmFune
3).text
,text伪操作将操作符开始的代码编译到代码段或代码段子段中。
语法格式
.text{subsection}
示例
.text
4).end
标记汇编文件的结束行,即标号后的代码不作代理。
语法格式
.end
5).Itorg
.Itorg伪操作用于在当前段(一般是.text段)的当前地址(字对准地址)产生一个文字池。
语法格式
.Itorg
五、实验操作步骤
1·实验A
新建工程:运行Embest
原创力文档

文档评论(0)