我在一项作业中遇到了麻烦,我无法编写它。我需要编写一个程序,该程序读取两个字符串,然后将这两个字符串连接到第三个字符串中,并输出第三个字符串。我可以单独进行连接部分,也可以单独进行字符串读取,但是我不知道如何在一个程序中同时完成它们。谁能帮忙吗?
这是代码,我在网上找到了它,但是它是用于连接两个字符串而不读取它们的,所以我尝试对其进行编辑,以便它可以读取两个字符串,但是不起作用。
.data
str1: .space 50
str2: .space 50
result: .space 100
.text
la $a0,result# get address of output
li $v0,8
la $a1,str1 # pass address of str1
li $a1,100
syscall
li $v0,8
la $a2,str2 # pass address of str2
li $a2,100
syscall
jal conc
# output the concatenated string
la $a0,result
li $v0,4
syscall
# BUG: no exit program
li $v0,10
syscall
# conc -- concatenate strings char-by-char
#
# arguments:
# a0 -- output pointer
# a1 -- pointer to string to concatenate
# a2 -- pointer to string to concatenate
conc:
lb $t1,0($a1) # get string char
beqz $t1,conc_no1st # EOS? if yes, skip
addi $a1,$a1,1 # advance 1st source pointer
sb $t1,0($a0) # add to output
addi $a0,$a0,1 # advance output pointer
conc_no1st:
lb $t2,0($a2) # add to output
beqz $t2,conc_no2nd # EOS? if yes, skip
addi $a2,$a2,1 # advance 2nd source pointer
sb $t2,0($a0) # add to output
addi $a0,$a0,1 # advance output pointer
conc_no2nd:
or $t1,$t1,$t2 # both chars EOS?
bnez $t1,conc # no, loop
sb $zero,0($a0) # store final EOS
jr $ra