arm裸机编程

来源:互联网 发布:马蓉移民澳洲知乎 编辑:程序博客网 时间:2024/05/02 01:57

   环境: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命令加载