如何使用ARM Assembly将寄存器中的值存储到绝对地址?

时间:2017-11-13 16:37:36

标签: assembly arm cortex-m3

我想使用ARM程序集将寄存器值存储到地址。我正在寻找这样的东西,

STR R0, =0x20000000            // store r0 to 0x20000000

但这是错误的。

执行此操作的一种方法如下,

LDR R1, =0x20000000
STR R0, [R1 + #0]

但我想只使用一个寄存器,如上所述。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:2)

  

但我想只使用一个寄存器,如上所述。

没有可用的存储器,所有存储指令都需要至少一个寄存器用于destionation地址。

原因很简单:尽管有32位指令,但没有足够的位可用于编码完整的32位地址,因为操作码总是需要更多的位。

由于同样的原因,加载和存储指令中的optinal偏移量受到限制。

相关问题