比较两个输入字符串并将较小的内容连接到较大的字符串并返回完整的字符串长度MIPS

时间:2016-05-02 20:33:20

标签: mips

我有一个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

0 个答案:

没有答案