arm裸机编程

ARM 75浏览

   环境:ADS1.2 

   芯片:S3C2440A

在ARM裸机编程时,我在程序中使用了下面这个语句:

MOV   R2,  #0xFC0C

编译时出现错误:immediate   out of range for this operation

这是在 ARM 状态下:

在范围 0x0-0xFF (0-255)
MOV 可加载任
8 位常数值。超出了这个范围就会出问题

该指令还可以将这些值循环移动任何偶数位。在许多数据处理操作中,这些值也可用作立即操作数,而无需用单独的指令加载。MVN 可加载这些值的按位补码。
这些补码数值为 
-(n+1),其中 n 是 MOV 中给出的值。
ARMv6T2 及更高版本中,
MOV 可以在 0x0-0xFFFF (0-65535)
范围内加载任何 16 位数字。

 

超出了这个范围可以用LDR命令加载