re:[MIPS] 100个字符串并一次打印10行。 [部件]

时间:2018-04-09 00:36:26

标签: string loops assembly mips

我有问题再次解决我得到的这些小任务。基本上我有一个存储在一行的电路板,我需要在一行中打印10个字符然后断开,依此类推。它是一个10 x 10的电路板,因此它应该运行10次,打印10个字符行。

这样的事情:

板:     .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

write_board:
   ##TODO Implement your solution here ###

  sw $a1, size           #I save 10 in length a1
  la $t0, board          #load the board on t0
  add $t1, $zero, $zero  #counter in t1 set to 0 for chars
  add $t5, $zero, $zero  #counter in t5 for the 10 loops
  li $t3, 10             #10 for the division in t3

count:
  lb $t2, 0($t0)
  addi $t1, $t1, 1
  div $t1, $t3  
  mfhi $t4                   #the remainder of div is in t4
  beq $t4, $zero, lineBreak  #if its 0 then break
  j count   

lineBreak:
  sw $t2, 0($a0)             #save the first 10 chars in a0 for printing
  jal print
  jal print_lf
  addi $t5, $t5, 1           #there needs to be 10 prints, we add 1 everytime one happens
  beq $t5, $t3 endString     #if its 10, the program is over
  j count 

 endString:
    jr $ra

.data
  size:
 .word      10

 board:
    .asciiz     "    x xx   x  x      x  x  xxx x  x         x   x         x xxxx  x x       x   xx    x         x xx"

这似乎不适用于QTSpim,它会出现此错误:PC = 0x004000e4时发生异常   存储区中的未对齐地址:0x00000001

任何人都可能知道这个简单任务的错误但对我来说很难。

提前致谢。

0 个答案:

没有答案