请问这一小段ARM汇编代码哪里有问题啊?传入存储器的值不对

   AREA SHIYAN01,CODE,READONLY
 ENTRY
 CODE32

START LDR R0,=0x40000000
MOV R1,#0x100
STR R1,[R0]
ADD R1,R1,#0x4
LDR R1,[R0,#0x4]
ADD R1,R1,#0x4
STR R1,[R0,#0x4];
ADD R1,R1,#0x4
STR R1,[R0,#0x4]
LDMIA R0!,{R2-R4}

 END

寄存器的读取有问题

我猜测你的想法是, 内存地址0x40000000上的值为0x100, 0x40000004上的值为0x104, 0x40000008上的值为0x108

MOV R1,#0x100
STR R1,[R0]
ADD R1,R1,#0x4
LDR R1,[R0,#0x4] //这里就破坏了, 这里是把0x40000004地址上的值读出到r1寄存器
ADD R1,R1,#0x4 // 后面的数据在r1上再加
STR R1,[R0,#0x4]; // 这里就应是[r0, #8]
ADD R1,R1,#0x4
STR R1,[R0,#0x4] // [r0, #12]