覆盖字符串MIPS

时间:2014-01-08 16:33:43

标签: mips

必须复制第一个字符串,当字符串的大小相同但第二个字符串不完整时,该空格中的第一个字符。遵循代码。如果有人帮忙我很感激。

.data  

string1:    .asciiz "Hello"  
string2:    .asciiz "Word"  
finalStr:   .space 256       # A 256 bytes buffer 
buffer:     .space 100

.text  


main:  

   la $s1, finalStr  
   la $s2, string1  
   la $s3, string2  


   copySecondString:  

       lb $t0, ($s3)                  # get character at address  
       beqz $t0, exit
       sb $t0, ($s2)                  # else store current character in the buffer  
       addi $s3, $s3, 1               # string1 pointer points a position forward  
       addi $s2, $s2, 1               # same for finalStr pointer  
       j copySecondString             # loop     

   exit:

       la $a0, string1  
       li $v0,4
       syscall

       li $v0, 10 
       syscall 

1 个答案:

答案 0 :(得分:1)

这里的问题是你不是null终止字符串,因此当第一个字符串比第二个字符串长时,它会溢出到剩下的字符中。

要解决此问题,请在存储指令后移动检查null:

lb $t0, ($s3)                  # get character at address  
sb $t0, ($s2)                  # store current character in the buffer
beqz $t0, exit                 # exit if null