在ARM-Assembly中将值存储在数组中

时间:2018-12-05 13:52:05

标签: assembly arm keil

我在ARM-Assembly中有一个预定义的数组,例如

Sample  DCD 0x003, 0x004, 0x005, 0x006

我只想更改Sample [0]和Sample [1]的索引

然后我编写了一个用于交换的ARM汇编代码

LDR R0, =Sample
LDR R1, [R0]
LDR R2, [R0, #4]
MOV R3, R1
MOV R1, R2
MOV R2, R3
STR R1, [R0]
STR R2, [R0, #4]

然后像

一样将数据一一读取到R4中
MAIN
LDR R4, [R0], #4
B MAIN

看起来很简单,但是数组没有改变,它仍然相同

如何更改索引?

简而言之,我的输入是

Sample  DCD 0x003, 0x004, 0x005, 0x006

我想要类似的输出

Sample  DCD 0x004, 0x003, 0x005, 0x006

1 个答案:

答案 0 :(得分:0)

您的数组没有更改,因为您需要在加载箭头之前对箭头进行ADR。 您的代码没有执行任何操作,因为您没有加载内存地址。这会起作用。

   ADR     R0, Sample
   LDR     R1, [R0]
   LDR     R2, [R0, #4]
   MOV     R3, R1
   MOV     R1, R2
   MOV     R2, R3
   STR     R1, [R0]
   STR     R2, [R0, #4]