我制作了一个乘法程序。但问题是结束循环的条件不能正常工作。这种奇怪行为的可能原因是什么。
问题出在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
由于
答案 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。