在装配中添加延迟

Adding delay in assembly

我正在尝试让计算机计数到某个高数,以便为程序的其他部分创建延迟。但是,出于某种原因,我无法将计数值设置得非常高,这给了我一个 "expression out of range" 错误。

代码:

delay:       

        CMP     R5, #0x0009 ;THIS is the value that needs to be high
        BEQ     loop
        ADD     R5, R5, #1

        B       delay

如何将计数限制设置为 999999(dec)?

谢谢!

将值加载到寄存器中,然后与该寄存器进行比较:

    MOV R4, #999999 ; assuming ARM syntax and support for the MOV pseudo-op

delay:

    CMP R5, R4
    BEQ loop
    ADD R5, R5, #1
    B delay

替换

ADD     R5, R5, #1

来自

ADDS     R5, R5, #1

ARM 支持 8 位模式,可以将偶数位<32 循环作为第二个操作数中的立即值。最好先将该值加载到其他寄存器中,然后进行比较。请参阅链接以获取解释: link1link2

试试这个代码:

    LDR R6,=999999
delay:       

    CMP     R5, R6 
    BEQ     loop
    ADD     R5, R5, #1

    B       delay