0
.data:
str2: .space 20 

#read string 

la $a0,str2 
li $a1,20 
li $v0,8
syscall

#print string 

la $a0, str2
li $v0, 4 
syscall


#print string 

    la $a0, str2
    li $v0, 4 
    syscall

结果:

示例文本

(我不想要这个中断......我该如何删除它?)

示例文本

-- 程序运行完毕(掉到底部) --

4

1 回答 1

0

您的问题是服务 8 在输入字符串的末尾添加了一个换行符,因此您必须将其替换为空字节 (0) 在读取 str2 的系统调用之后添加以下代码:

  # remove trailing newline
  li $a3, '\n'
newlineloop:
  beqz $a1, newlineloopend
  subu $a1, $a1, 1
  lb $a2, str2($a1)
  bne $a2, $a3, newlineloop
  li $a3, 0
  sb $a3, str2($a1)
newlineloopend: 

它将搜索该换行符并将其替换为空字节

于 2013-05-15T13:28:31.823 回答