我第一次在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
答案 0 :(得分:0)
您在每次迭代中使用$s0
作为被除数,但$s0
永远不会被修改。
输出中没有任何内容可能会出现,因为你从未完成过一行。