我是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