ARM Cortex-M3汇编语言编程:数据操作详解
1. 将常数加载到寄存器
在ARM Cortex-M3处理器中, MOV
和 MVN
指令用于将常数加载到寄存器中。 MOV
指令将常量复制到寄存器中,而 MVN
指令则是 “移动非”,将常量的反码复制到寄存器中。
MOV R1, #100 ; 将100复制到R1
MVN R1, #100 ; 将100的反码复制到R1
常数总是以井号 ( #
) 开头,默认情况下以十进制形式编写;十六进制常数必须以 0x
开头,例如 MOV R1, #0xF3
。
如果编写了一个负数常量,汇编器会将其转换为等效的 MVN
指令。例如, MOV R1, #-100
会被替换为 MVN R1, #99
。
不幸的是, MOV
和 MVN
指令不支持完整的32位值范围,因为只有指令的一部分位用于保存常量。因此,当需要不同的值时,唯一的替代方法是将常量存储在单独的内存位置,并使用内存引用指令加载它。
LDR R1, =10 ; 汇编器将此替换为 MOV R1,