如果出现异常,如何调试mips中的循环



我是Mips的新手,我得到了一个需要打印以下模式的任务,但它给了我一个异常。我试过调试,我知道问题还在循环中,但没有解决。请帮忙!

554543543254321

这就是我迄今为止所做的:

main:

li $t0 , 5  #rows
move $t1,$t0 #i
move $t2,$t0 #j
addi $t3,$t3 , 1

outerLoop:

beq $t3 , $t1 , end
sub $t1 , $t1 , $t3

innerLoop:

bgt $t1 , $t2 , newline1    
li $v0, 1
move $a0, $t2               
syscall
sub $t2 , $t2 , $t3 
j innerLoop

换行符1:

li $v0, 4
la $a0, newline            
syscall
j outerLoop    

结束:

li $v0, 10
syscall   

我想我已经知道你在问什么了,你代码中的问题是(如果我错了,请告诉我(,但我已经知道,每次进入内部循环时,它都会递减J,但基本上,当你回到外部循环时,你需要J等于行,而代码中的另一个问题是,一旦内部循环终止,"I"就会递减。

试试这个代码,我添加了注释以更好地理解。

outerLoop:

beq $t3 , $t1 , end #1<i
move $t2, $t0  # j = rows, everytime you go to innerloop from outerloop

innerLoop:

bgt $t1 , $t2 , newline1    #if j<i then exit the inner loop and print newline
li $v0, 1
move $a0, $t2               #Print vaue of j
syscall
sub $t2 , $t2 , $t3     #j--
j innerLoop     #loop until j<i

换行符1:

li $v0, 4
la $a0, newline            #print newLine
syscall
sub $t1 , $t1 , $t3        #Increment i and jump back to first Loop
j outerLoop            

最新更新