2012-09-16 73 views
0

我做了一個乘法程序。但問題是結束循環的條件無法正常工作。這種奇怪行爲的可能原因是什麼?循環結束條件不起作用

的問題是在環標籤..

.text 

main: 

li $t0,1 
li $t1,2 
li $t2,3 
li $t3,4 

li $v0,5 
syscall 

move $s0,$v0 
beq $s0,$t2,MULT 


MULT: 
li $v0,5 
syscall 


move $s5,$v0 

li $v0,5 
syscall 

move $s6,$v0 
move $t5,$s6 

Loop: 
add $a0,$s5,$s5 

addi $t5,$t5,1 
li $v0,1 
syscall 
bne $t5,$s6, Loop 

j EXIT 


EXIT: 

li $v0,10 
syscall 

感謝

+0

請格式化你的代碼,這是難以事先閱讀...感謝。 – Thomas

+0

另外,將代碼剝離到最少的部分是很有幫助的,從中可以清楚地發現問題所在。任何周圍的代碼只是分心時,不涉及,尤其是當它包含更多的錯誤/瑕疵,其中一些你可以按照我的答案中的提示去除「[如果其他在MIPS](http://stackoverflow.com/questions/12439356/if-else-in-mips)「問題。 – IdiotFromOutOfNowhere

+0

現在你能告訴我循環標記有什麼問題 –

回答

1

此:

addi $t5,$t5,1 
... 
bne $t5,$s6, Loop 

應該是:

addi $t5,$t5,-1 
... 
bnez $t5, Loop 

現在你只是計算$ t5從你有的價值廣告無限,並永遠不會停止。

或者,您也可以通過li $5, 0

而且更換move $t5,$s6,不要忘記$ A0初始化爲0