在MIPS中一次从字符串中打印10个字符

时间:2018-04-04 21:32:37

标签: loops assembly mips

我遇到了解决这些小任务的问题。基本上我有一个存储在一行的电路板,我需要在一行中打印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,它永远不会退出,只是继续运行。

任何人都可以知道这个小任务的解决方案。

提前致谢。

0 个答案:

没有答案