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
あなたが何かを理解していない場合は、お気軽にお問い合わせください。
楽しい:)
あなたは私が '.asciiz'を使用している場合、それは' \ 0を使用して文字列を終了すると思いC. – Vlad
で '\ 0 'のような文字列の終端文字を、持っているかもしれない、またはを持っています'' beq $ t0、$ 0、Exit'のようにチェックします。ここで '$ t0'は文字列からロードされたバイトです –
そうだと思います。しばらくの間、私はMIPSアセンブリを見たことがありません。アルゴリズム的には、 '\ 0'を見つけるまで、目的の文字列を踏み越えることができます(直接連結している場合)。そして、' \ 0'を見つけるまで、その文字列からバイトを追加し始めます。 \ 0'をソース文字列に追加し、その文字列も追加すれば完了です。 – Vlad