我遇到了解决这些小任务的问题。基本上我有一个存储在一行的电路板,我需要在一行中打印10个字符然后断开,依此类推。它是一个10 x 10的电路板,因此它应该运行10次,打印10个字符行。
这样的事情:
board:
.asciiz " x xx x x x x xxx x x x x x xxxx x x x xx x x xx"
为此我们得到了2个子程序,print和printlf。 print需要$ a0打印的字符串,$ a1的长度,所以我需要jal打印一旦我得到正确的字符存储在寄存器中。
我正在阅读如何在互联网上解决这个问题并进入source。
它使用lb逐字节加载寄存器上的字符串。所以我试着用计数器循环每10个字符。如果字符为0,那么它显然是字符串的结尾。我对此并不十分确定,尽管该消息来源说它就是这样。
li $a1, 10 #the length of the string it's supposed to print
la $t0, board
count:
lb $a0, 0($t0)
li $t1, 0 #for counting characters
addi $t0, $t0, 1
addi $t1, $t1, 1
beq $t1, $a1, endLoop
j count
endLoop:
jal print #doing this should print whatever is in $a0 if I'm not mistaken
jal print_lf #prints a line break
beqz $a0, endString
j count
endString:
jr $ra
这似乎不适用于QTSpim,它永远不会退出,只是继续运行。
任何人都可以知道这个小任务的解决方案。
提前致谢。