在装配中添加延迟
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 循环作为第二个操作数中的立即值。最好先将该值加载到其他寄存器中,然后进行比较。请参阅链接以获取解释:
link1
和
link2
试试这个代码:
LDR R6,=999999
delay:
CMP R5, R6
BEQ loop
ADD R5, R5, #1
B delay
我正在尝试让计算机计数到某个高数,以便为程序的其他部分创建延迟。但是,出于某种原因,我无法将计数值设置得非常高,这给了我一个 "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 循环作为第二个操作数中的立即值。最好先将该值加载到其他寄存器中,然后进行比较。请参阅链接以获取解释: link1 和 link2
试试这个代码:
LDR R6,=999999
delay:
CMP R5, R6
BEQ loop
ADD R5, R5, #1
B delay