如何在MIPS中连接两个字符串?
我是MIPS新手,我将此代码作为作业,我不知道如何添加以使其在QtSpim上运行。请帮助。在第二个循环结束时,您缺少返回到string2的跳转如何在MIPS中连接两个字符串?,mips,string-concatenation,spim,Mips,String Concatenation,Spim,我是MIPS新手,我将此代码作为作业,我不知道如何添加以使其在QtSpim上运行。请帮助。在第二个循环结束时,您缺少返回到string2的跳转 concat: lb $t0, 0($a0) # $t0 = string1[i] beq $t0, $0, string2 # if end of string1, go to string2 sb $t0, 0($a2) # str
concat:
lb $t0, 0($a0) # $t0 = string1[i]
beq $t0, $0, string2 # if end of string1, go to string2
sb $t0, 0($a2) # stringconcat[i] = string1[i]
addi $a0, $a0, 1 # increment index into string1
addi $a2, $a2, 1 # increment index into stringconcat
j concat # loop back
string2:
lb $t0, 0($a1) # $t0 = string2[j]
beq $t0, $0, done # if end of string2, return
sb $t0, 0($a2) # stringconcat[j] = string2[j]
addi $a1, $a1, 1 # increment index into string2
addi $a2, $a2, 1 # increment index into stringconcat
done:
sb $0, 0($a2) # append null to end of string
jr $ra
为了完整起见,bellow是一个基于您的代码的完全工作的程序。它将字符串:Bull和Dozer连接到:推土机:
在PC=0x00400024时发生异常。如果您没有将$a0设置为任何值,则第一条指令可能出现空指针异常。@user3724875我正在使用Mars软件运行Mips汇编程序,这非常好。下载链接:
string2:
lb $t0, 0($a1)
beq $t0, $0, done
sb $t0, 0($a2)
addi $a1, $a1, 1
addi $a2, $a2, 1
j string2 # Missing line!
.data
first: .asciiz "Bull"
second: .asciiz "Dozer"
.align 2
result: .space 10 #10 bytes for result: strlen("Bull") + strlen("Dozer") + 1
.align 2
.globl main
.text
main:
la $a0, first
la $a1, second
la $a2, result
concat:
lb $t0, 0($a0) # $t0 = string1[i]
beq $t0, $0, string2 # if end of string1, go to string2
sb $t0, 0($a2) # stringconcat[i] = string1[i]
addi $a0, $a0, 1 # increment index into string1
addi $a2, $a2, 1 # increment index into stringconcat
j concat # loop back
string2:
lb $t0, 0($a1) # $t0 = string2[j]
beq $t0, $0, done # if end of string2, return
sb $t0, 0($a2) # stringconcat[j] = string2[j]
addi $a1, $a1, 1 # increment index into string2
addi $a2, $a2, 1 # increment index into stringconcat
j string2 # **Missing line!**
done:
sb $0, 0($a2) # append null to end of string
jr $ra