一、实验目的
熟悉实验开发环境,掌握简单ARM汇编指令的使用方法。
二、实验环境
(1)硬件:PC机
(2)软件:ADS1.2 集成开发环境
三、实验内容
(1)熟悉开发环境并使用LDR/STR,MOV等指令访问寄存器或存储单元;
(2)使用ADD/SUB/LSL/LSR/AND/ORR等指令,完成基本数学/逻辑运算。
四、实验内容
(1)在ADS下创建一个工程asmlab1,定义两个变量x,y和堆栈地址0x1000,将变量x的内容存到堆栈顶,然后计算x+y,并将和存到堆栈的下一个单元。通过AXD查看寄存器和memory和寄存器中数据变化。
(2)在指令后面加上适当注释,说明指令功能。
(3)指出程序执行完成后各相关寄存器及存储器单元的具体内容。
五、实验步骤
(1)实验源代码
AREA Init,CODE,READONLY ;伪指令AREA定义名为Init,属性为只读
的代码片段
ENTRY ;伪指令ENTRY声明程序入口
CODE32 ;声明以下代码为32位的 ARM 指令
x EQU 45 ;定义变量 x
y EQU 64 ;定义变量 y
stack_top EQU 0x1000 ;定义堆栈地址 0x1000
start MOV SP, #stack_top ;设置栈顶地址
MOV R0, #x ;把x的值赋给R0
STR R0, [SP] ;将R0中的内容入栈
MOV R0, #y ;把y的值赋给R0
LDR R1, [SP] ; 数据出栈,放入R1,即R1中放入x的值
ADD R0, R0, R1 ;R0=R0+R1
STR R0, [SP,#4] ;先执行SP+4(ARM为32位指令集),再将R0的内容复制到SP
指向的寄存器
B .
END ;程序结束
(2)实验过程
1、执行完start MOV SP, #stack_top 后,栈顶地址被设置为0x1000