對於一類剛剛開始使用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