必须复制第一个字符串,当字符串的大小相同但第二个字符串不完整时,该空格中的第一个字符。遵循代码。如果有人帮忙我很感激。
.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
答案 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