/*
* ldr
*
* 从内存中读取数据到寄存器
*/
LDR R2, [R0] @ [R0] - 数据源地址来自于R0指向的内存地址
@ LDR操作:从R0指向的地址中取值放到R2中
ldr r0, [r1] // 将存储器地址为 r1 的字数据读入 r0
ldr r0, [r1, r2] // 将存储器地址为 r1 + r2 的字数据读入 r0
ldr r0, [r1, #8] // 将存储器地址为 r1 + 8 的字数据读入 r0
ldr r0, [r1, r2]! // 将存储器地址为 r1 + r2 的字数据读入 r0, 并将新地址 r1 + r2 写入 r1
ldr r0, [r1, #8]! // 将存储器地址为 r1 + 8 的字数据读入 r0, 并将新地址 r1 + 8 写入 r1
ldr r0, [r1], r2 // 将存储器地址为 r1 的字数据读放寄存器 r0, 并将新地址 r1 + r2 写入 r1
ldr r0, [r1, r2, lsl#2]! // 将存储器地址为 r1 + r2 * 4 的字数据读入 r0, 并将新地址
// r1 + r2 * 4 写入 r1
ldr r0, [r1], r2, lsl#2 // 将存储器地址为 r1 的字数据读入 r0, 并将新地址r1 + r2 * 4 写入 r1
ldrb r0, [r1] // 将存储器地址为 r1 的字节数据读入 r0, 并将 r0 的高 24 位清零.
ldrb r0, [r1 , #8] // 将存储器地址为 r1 + 8 的字节数据读入 r0, 并将 r0 的高 24 位清零.
ldrh r0, [r1] // 将存储器地址为 r1 的半字数据读入 r0, 并将 r0 的高 16 位清零.
ldrh r0, [r1, #8] // 将存储器地址为 r1 + 8 的半字数据读入 r0, 并将 r0 的高 16 位清零.
ldrh r0, [r1, r2] // 将存储器地址为 r1 + r2 的半字数据读入 r0, 并将 r0 的高 16 位清零.
ldr r1,=4096 // r1 = 4096
ldr r1,[r2,#4] // 将地址为r2+4的内存单元数据读取到r1中去
ldr r1,[r2] // 将地址为r2的内存单元位数据读取到r1中去
ldr r1,[r2],#4 // 将地址为r2的内存单元的数据读取到r1中,然后r2=r2+4
[ldrb] : 字节数据加载
[ldrh] : 半字数据加载
[strb] : 字节数据存储
[strh] : 半字数据存储
ldr = 加载字,宽度四字节
ldrh = 加载无符号的半字,宽度两字节
ldrsh = 加载有符号的半字,宽度两字节
ldrb = 加载无符号的字节
ldrsb = 加载有符号的字节
str = 存储字,宽度四字节
strh = 存储无符号的半字,宽度两字节
strsh = 存储有符号的半字,宽度两字节
strb = 存储无符号的字节
strsb = 存储有符号的字节