0
如何连接MIPS中的字符串?我想我会不知何故必须知道字符串的长度?如何连接MIPS中的字符串?
如何连接MIPS中的字符串?我想我会不知何故必须知道字符串的长度?如何连接MIPS中的字符串?
快速和肮脏的:
# String concatenate
.text
# Copy first string to result buffer
la $a0, str1
la $a1, result
jal strcopier
nop
# Concatenate second string on result buffer
la $a0, str2
or $a1, $v0, $zero
jal strcopier
nop
j finish
nop
# String copier function
strcopier:
or $t0, $a0, $zero # Source
or $t1, $a1, $zero # Destination
loop:
lb $t2, 0($t0)
beq $t2, $zero, end
addiu $t0, $t0, 1
sb $t2, 0($t1)
addiu $t1, $t1, 1
b loop
nop
end:
or $v0, $t1, $zero # Return last position on result buffer
jr $ra
nop
finish:
j finish
nop
.data
str1:
.asciiz "Hello "
str2:
.asciiz "world"
result:
.space 200
如果你不明白的地方,请不要犹豫,问。
玩得开心:)
也就是说,或者你可能有一个字符串终止符,就像在C. – Vlad
了'\ 0'我想如果我用'.asciiz',它会使用'\ 0终止字符串'然后我检查'beq $ t0,$ 0,Exit',其中'$ t0'是字符串 –
加载的字节。我认为是。我在一段时间内没有看到任何MIPS组件。从算法上讲,您可以跨越目标字符串(如果直接连接到该字符串),直到找到“\ 0”,然后从源字符串开始在该位置开始添加字节,直到找到“ \ 0'在源字符串中,添加一个,你就完成了。 – Vlad