如果出现异常,如何在 mips 中调试循环
How to debug the loop in mips if its giving exception
我是 Mips 的新手,我得到了一项任务,我需要打印以下模式,但它给了我一个异常。我试过调试,我知道问题出在循环中,但没有解决。请帮忙!
5
54
543
5432
54321
这就是我到目前为止所做的:
主要内容:
li $t0 , 5 #rows
move $t1,$t0 #i
move $t2,$t0 #j
addi $t3,$t3 , 1
外循环:
beq $t3 , $t1 , end
sub $t1 , $t1 , $t3
内循环:
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' 会在你的内循环终止后递减。
试试这段代码,我添加了评论以便更好地理解。
外循环:
beq $t3 , $t1 , end #1<i
move $t2, $t0 # j = rows, everytime you go to innerloop from outerloop
内循环:
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
我是 Mips 的新手,我得到了一项任务,我需要打印以下模式,但它给了我一个异常。我试过调试,我知道问题出在循环中,但没有解决。请帮忙!
5 54 543 5432 54321
这就是我到目前为止所做的:
主要内容:
li $t0 , 5 #rows
move $t1,$t0 #i
move $t2,$t0 #j
addi $t3,$t3 , 1
外循环:
beq $t3 , $t1 , end
sub $t1 , $t1 , $t3
内循环:
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' 会在你的内循环终止后递减。
试试这段代码,我添加了评论以便更好地理解。
外循环:
beq $t3 , $t1 , end #1<i
move $t2, $t0 # j = rows, everytime you go to innerloop from outerloop
内循环:
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