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

谢谢

4

1 回答 1

1

这:

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

应该:

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

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

或者,您也可以替换move $t5,$s6li $5, 0

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

于 2012-09-16T20:22:07.693 回答