0

掛け算のプログラムを作りました。しかし問題は、ループを終了する条件が正しく機能していないことです。この奇妙な動作の考えられる理由は何ですか。

問題は 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

ありがとう

4

1 に答える 1

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 に初期化することを忘れないでください。

于 2012-09-16T20:22:07.693 に答える