我正在尝试使计算机计数到某个较高的数字,以便为程序的其他部分创建延迟。但是,出于某种原因,我无法将计数值设置为非常高,它会给我一个“表达式超出范围”错误。
代码:
delay:
CMP R5, #0x0009 ;THIS is the value that needs to be high
BEQ loop
ADD R5, R5, #1
B delay
如何将计数限制设置为999999(十进制)?
谢谢!
答案 0 :(得分:1)
将值加载到寄存器中,然后与该寄存器进行比较:
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
答案 1 :(得分:0)
ARM支持8位模式,可以在第二个操作数中以偶数位数< 32作为立即值旋转。最好首先在其他寄存器中加载该值然后进行比较。参考链接以获得解释: link1 和 link2
试试这段代码:
LDR R6,=999999
delay:
CMP R5, R6
BEQ loop
ADD R5, R5, #1
B delay
答案 2 :(得分:-1)
替换
ADD R5, R5, #1
通过
ADDS R5, R5, #1