Mips代码:循环错误

时间:2014-10-18 19:33:18

标签: loops mips

我第一次在mips上工作

但我的代码似乎陷入无限循环,我无法理解这个问题。当我在Qtspim中运行我的代码时,它没有出现任何错误,也没有显示任何内容,窗口停止响应: 很少的帮助将不胜感激!感谢

.data
arr1:.word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

.text
.globl _start
main:

add $s2,$zero,$zero
add $s3,$zero,$zero
add $t3,$zero,$zero
add $t4,$zero,$zero
add $s1,$zero,$zero

addi $t5,$zero,31
addi $t6,$zero,-1
addi $s0,$zero,12       # s0 = 12
add $t0,$s0,$zero       #initializing t0 with s0
addi $t2,$zero,2
while:

    slt $t1,$zero,$t0   #initialization (0<t0)
    beq $t1,$zero,while_exit#if(t1==0){exit}

    div $s0,$t2         # s0/2;
    mfhi $s1        # reminder
    mflo $t0        # answer of division    

    #add $t5,$t5,$t6        # sub

    beq $s1,0,else      #if(s1!=0){else}
    addi $s2,$s2,1      #counting no of ones
    addi $v0,$zero,1
    add $a0,$s1,$zero
    syscall
j while
else: 
    addi $s3,$s3,1      #counting no of zeros
    addi $v0,$zero,1
    add $a0,$s1,$zero
    syscall
j while 

while_exit:


addi $v0,$zero,10
syscall

1 个答案:

答案 0 :(得分:0)

您在每次迭代中使用$s0作为被除数,但$s0永远不会被修改。

输出中没有任何内容可能会出现,因为你从未完成过一行。