【发布时间】:2016-09-07 15:37:31
【问题描述】:
对于刚开始使用 ARM 汇编语言的类,我们需要实现一个简单的 for 循环,如下所述:
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
如果我从代码中删除它,一切正常。我只是无法理解这一行的问题。给出的错误描述是“错误的寄存器名称符号,预期的整数寄存器”。我曾尝试将#3 加载到一个寄存器中,然后将这两个寄存器相乘,但这并没有帮助。它只是将错误消息更改为“此寄存器组合导致不可预测的行为”。我是新手,因此请仅提供基本说明作为解决方法。谢谢。
【问题讨论】:
-
阅读您的指令集参考对
mul指令的看法,尤其是关于它采用何种形式的操作数。
标签: for-loop assembly arm keil microprocessors