文章目录
一、LDR和STR
ARM指令集中的LDR和STR指令分别用于从内存中加载数据和将数据存储回内存,它们是ARM汇编语言中最常用的指令之一。
LDR指令的语法为LDR{条件码}{B}{T} 目标寄存器, [源寄存器, 位移],用于将源寄存器中位移地址处的数据加载到目标寄存器中。例如,以下代码将从内存中读取32位无符号整数并存储在寄存器R0中:
LDR R0, [R1]
STR指令的语法为STR{条件码}{B}{T} 源寄存器, [目标寄存器, 位移],用于将源寄存器中的数据存储到目标寄存器的位移地址处。例如,以下代码将一个32位无符号整数存储到寄存器R1指向的内存地址中:
STR R0, [R1]
这些指令一般用于读写数组、结构体和其他复杂数据类型。例如,以下代码将数组中的值相加,并将结果存储在变量sum中:
LDR R0, =array ; 将数组地址加载到R0
MOV R1, #0 ; 将0加载到R1,作为累加器
LOOP:
LDR R2, [R0], #4 ; 将R0向后移动4个字节,加载数组元素到R2
ADD R1, R1, R2 ; 将R2添加到R1中
CMP R0, #array_end ; 比较当前地址和数组结尾地址
BNE LOOP