традиционно arm допускает 8 или 9 бит и смену, поэтому 12000 = 0x2EE0, как указал Стивен, вы можете сделать это:
mov r0, #0x2E00
orr r0, #0x00E0
Другой способ, с помощью быстрого ярлыка:
ldr r0,=0x2EE0
, что означает, что ассемблер найдет место для установки этого значения, затем выполнит относительную нагрузку на ПК, или вы можете сделать это самостоятельно:
ldr r0,mynumber
...
mynumber: .word 12000
Более новые расширения набора команд допускают больше битов в немедленном. Я обычно использую
ldr r0,=0x2EE0
и убедитесь, что у меня есть безусловные ветви, в основном пулы для ассемблера для размещения переменных. Компиляторы обычно делают то же самое, если они не могут вписать немедленные в одну инструкцию, они склонны использовать относительный загрузочный ПК, а не множественные немедленные инструкции.