ARM程序集-立即数操作数值无效

ARM程序集-立即数操作数值无效,arm,Arm,问题是“将数据存储到内存位置1001h,…(1001h+10)并在内存位置2001中以相反顺序复制数据…(2001+h)”我一直得到运行时错误无效的立即操作数值 必须通过在32位字内向右旋转8位数字来创建立即数。 我怎么修理它 MVN R2,#0x1001 MOV R3,#0x2000 MOV R4,#0X01 MOV R0,#0X10 LOOP STRB R4,[R2] LDRB R5,[R2] STRB R0,[R3] ADD R2,R2,#0x01

问题是“将数据存储到内存位置1001h,…(1001h+10)并在内存位置2001中以相反顺序复制数据…(2001+h)”我一直得到运行时错误无效的立即操作数值 必须通过在32位字内向右旋转8位数字来创建立即数。 我怎么修理它

MVN R2,#0x1001
MOV R3,#0x2000
MOV R4,#0X01
MOV R0,#0X10


LOOP

    STRB R4,[R2]
    LDRB R5,[R2]
    STRB R0,[R3]
    ADD R2,R2,#0x01
    ADD R3,R3,#0x01
    ADD R4,R4, #0x01
    SUB R0,R0, #0x01
    CMP R0,#0x01
    BNE LOOP

    END

首先将其加载到寄存器中,然后使用寄存器为什么是mvn?而不是mov?关于如何将值加载到arm寄存器的无数示例,您在提问之前是否进行了搜索?@old_timer谢谢您提供的信息,我在哪里加载寄存器?在使用它之前,请尝试ldr r2,=0x1001。那么如果你坚持MVN,那么MVN r2,r2,你为什么要否定这个值?