kk EQU 0x100
AREA Init,CODE,READONLY
ENTRY
start
MOV R0,#kk
MOV R0,#0x5001
B .
END
--------------------------------------------
报错。说立即数0x00005001超出范围
如果改成MOV R0 #0x5004就不报错
ads1.2下面MOV指令只能送4的倍数值?
怎么回事啊?
另外:
MOV R0,#0x101 也会报错
MOV R0,#0x104 就不会报错
?
共3条
1/1 1 跳转至页

你去了解一下ARM的指令结构和MOV指令的具体定义就会明白了。这里大概说一下为什么,具体的麻烦你参考
ARM ARCHITECTURE REFERENCE MANUAL.
一条ARM指令是32-bit的,每条指令都有固定的定义。32-bit指令包括了指令定义,条件码,目的寄存器,及
其操作数。其中操作数有MOV指令的B[11:0]比特定义,总共是12-bit. 这12-BIT会按照一定的要求来解析。
很显然,这12比特并不能表示所有的数。这就是为什么会报错了。
如果LZ要装载一个数到一个寄存器,而MOV指令满足不了要求,可以用LDR指令,例如: LDR R0, =0X5001
ARM ARCHITECTURE REFERENCE MANUAL.
一条ARM指令是32-bit的,每条指令都有固定的定义。32-bit指令包括了指令定义,条件码,目的寄存器,及
其操作数。其中操作数有MOV指令的B[11:0]比特定义,总共是12-bit. 这12-BIT会按照一定的要求来解析。
很显然,这12比特并不能表示所有的数。这就是为什么会报错了。
如果LZ要装载一个数到一个寄存器,而MOV指令满足不了要求,可以用LDR指令,例如: LDR R0, =0X5001
共3条
1/1 1 跳转至页
回复
打赏帖 | |
---|---|
【OZONE】使用方法总结被打赏20分 | |
【S32K314】芯片启动流程分析被打赏20分 | |
【LP-MSPM0L1306】适配 RT-Thread Nano被打赏20分 | |
今天的咸鱼也是曾经鱼跃龙门的天纵之才,中流击水,浪遏飞舟,粪土当年万户侯,数风流人物,还看今朝,被打赏5分 | |
分享一种检测按键状态的方法被打赏20分 | |
周末总结一下,STM32C0系列的开发经验被打赏50分 | |
【换取手持数字示波器】MicrochipMPLABHarmony框架下定时器配置被打赏20分 | |
【换取手持数字示波器】MicrochipMPLABHarmony框架下PWM配置被打赏20分 | |
【Cortex-M】Systick Timer使用被打赏10分 | |
分享汽车防盗系统的组成与分类(一)被打赏5分 |