我有一个MIPS程序,其程序将两个输入字符串作为参数,并将它们连接成一个。我想比较它们并将较大的字符串放入较小的字符串并打印完整的字符串长度。
这是我现在写的代码:
.data
first: .space 255 #255 bytes for first string
second: .space 255 #255 bytes for second stringfull: .space 512 #255 bytes for first string
.text
main:
la $a0,first
li $a1,255
li $v0,8
syscall
la $a0,second
li $a1,255
li $v0,8
syscall
move $s0,$ra
la $a0,first
la $a1,second
la $a2,full
jal strcpy
move $ra,$s0
add $a0,$a1,$zero
li $v0, 1
syscall
#display a new-line
li $a0,10
li $v0,11
syscall
#exit
jr $ra
strcpy:
li $t8 10 #store newline in $t8
slt $s2,$a1,$a0
beq $s2,$zero,sCopyFirst
if_pocetok:
add $a3,$a1,$a0
add $a0,$a1,$zero
add $a1,$a3,$zero
beq $zero,$zero,sCopyFirst
#loop through first string and copy to output string
sCopyFirst:
lb $t0 0($a0)
beq $t0 $zero sCopySecond #exit loop on null byte
beq $t0 $t8 sCopySecond #exit loop on new-line
sb $t0 0($a2)
addi $a0 $a0 1
addi $a2 $a2 1
b sCopyFirst
#loop through second string and copy to output string
sCopySecond:
lb $t0 0($a1)
beq $t0 $zero sDone #exit on null byte
beq $t0 $t8 sDone #exit on new-line
sb $t0 0($a2)
addi $a1 $a1 1
addi $a2 $a2 1
b sCopySecond
sDone:
add $a1,$zero,$zero
sb $zero,0($a2) #null terminate string
addi $t1,$zero,0
loop:
lbu $t2, 0($a2)
beq $t2, $zero, exit
addi $a2, $a2, 1
addi $a1, $a1, 1
jal loop
exit:
jr $ra