循环结束条件不起作用

时间:2012-09-16 06:29:51

标签: loops assembly mips

我制作了一个乘法程序。但问题是结束循环的条件不能正常工作。这种奇怪行为的可能原因是什么。

问题出在Loop标签..

.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

由于

1 个答案:

答案 0 :(得分:1)

此:

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

应该是:

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

现在你只是从你读到的无穷大的数值计算$ t5,并且永远不会停止。

或者,您也可以将move $t5,$s6替换为li $5, 0

此外,不要忘记将$ a0初始化为0。