ARM数据加载指令的运算示例

img

看不懂0×8000000C+8=0×80000014
也看不懂为什么0×80000014地址代表的数据为0×D4

各位大佬看到一定要给个回复,球球了!!!

这是16进制,c=12,c+8=20,16进制中14就是20,R0是低八位,就是0xD4


MOV    R0,#8                ; 给 R0 赋值 8
LDR    R1,=0x8000000C        ; 将地址 0x8000000C 赋值给 R1
LDR    R2,=0xA1B2C3D4        ; 将地址 0xA1B2C3D4 赋值给 R2
STR    R2,[R1,R0]            ; 将 R2 的值存入地址 [R1+R0] 中
                        ; R1 = 0x8000000C , R0 = 8
                        ; 也就是存入 [0x8000000C + 8] 中
                        ; 也就是将 0xA1B2C3D4 存入 [0x80000014] 中
                        ; STR    R2,[R1,R0] 执行后 R1 = R1 + R0 = 0x80000014
                        ; 这时 [0x80000014] 的第一个字节就是 0xD4