For a class just starting out with the ARM assembly language, we are required to implement a simple for-loop described below:
h=1; for (i=0, i<5, i++) h=(h*3)-i;
I have written the following code in ARM assembly:
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
The problem is that there is an error with the line
MULLT r0, r0, #3; if i<5, h=h*3
If I delete it from the code, everything works fine. I just cannot understand the issue with this one line. The error description given is "Bad register name symbol, expected integer register." I have tried loading #3 into a register then multiplying the two registers, but that didn't help. It simply changed the error message to "This register combination results in unpredictable behavior." I am new to this, so please offer only basic instructions as a fix for this. Thanks.