我在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
答案 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]