对于一类刚刚开始使用ARM汇编语言,我们都需要实现一个简单的for循环如下所述:介绍ARM - 装配误差
h=1;
for (i=0, i<5, i++)
h=(h*3)-i;
我已经写在ARM汇编下面的代码:
AREA Prog2, CODE, READONLY
ENTRY
MOV r0, #1; initialize h=1
MOV r1, #0; initialize i=0
loop CMP r1, #5; at start of loop, compare i with 5
MULLT r0, r0, #3; if i<5, h=h*3
SUBLT r0, r0, r1; if i<5, h=h-i (ties in with previous line)
ADDLT r1, r1, #1; increment i if i is less than 5
BLT loop ; repeat loop of i is less than 5
stop B stop; stop program
END
的问题是,有一个与线
MULLT r0, r0, #3; if i<5, h=h*3
一个错误。如果我删除它˚F rom代码,一切工作正常。我无法理解这一行的问题。给出的错误描述是“错误的寄存器名称符号,预期的整数寄存器”。我已经尝试将#3加载到寄存器中,然后将这两个寄存器相乘,但这并没有帮助。它只是将错误信息更改为“此寄存器组合导致不可预知的行为。”我是新手,因此请仅提供基本说明以解决此问题。谢谢。
看了你的指令集的引用有什么说的'mul'指令,特别是需要什么操作数的形式。 – Notlikethat