2011-10-23 60 views
0

如何連接MIPS中的字符串?我想我會不知何故必須知道字符串的長度?如何連接MIPS中的字符串?

+0

也就是說,或者你可能有一個字符串終止符,就像在C. – Vlad

+0

了'\ 0'我想如果我用'.asciiz',它會使用'\ 0終止字符串'然後我檢查'beq $ t0,$ 0,Exit',其中'$ t0'是字符串 –

+0

加載的字節。我認爲是。我在一段時間內沒有看到任何MIPS組件。從算法上講,您可以跨越目標字符串(如果直接連接到該字符串),直到找到「\ 0」,然後從源字符串開始在該位置開始添加字節,直到找到「 \ 0'在源字符串中,添加一個,你就完成了。 – Vlad

回答

1

快速和骯髒的:

# 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 

如果你不明白的地方,請不要猶豫,問。

玩得開心:)