Mips代码:循环错误(Mips code : loop error)
我是第一次在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 syscallI am working on mips for the 1st time
but my code seems to be stuck in an infinite while loop, I cant understand the problem. when I run my code in Qtspim it gives no errors and displays nothing and the window stops responding: little help would be appreciated! Thanks
.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最满意答案
在每次迭代中使用$s0作为被除数,但$s0永远不会被修改。
输出中没有任何内容可能会出现,因为您从未完成过一行。
You use $s0 for the dividend in each iteration, but $s0 never gets modified.
Nothing may be appearing in the output because you never finished a line.
更多推荐
发布评论