Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .data
- string1: .space 1000
- string2: .space 1000
- resenie1: .asciiz "Concatenated string:"
- resenie2: .asciiz "\nLength:"
- .text
- la $a0, string1 #read first
- li $a1, 1000
- li $v0, 8
- syscall
- la $a0, string2 #read second
- li $a1, 1000
- li $v0, 8
- syscall
- la $a0, string1
- sb $0, -1($a0)
- la $a1, string2
- sb $0, -1($a1)
- jal procedure #procedure
- move $t0, $v0
- move $t1, $v1
- #print
- la $a0, resenie1
- li $v0, 4
- syscall
- move $a0, $t1
- li $v0, 4
- syscall
- la $a0, resenie2
- li $v0, 4
- syscall
- move $a0, $t0
- li $v0, 1
- syscall
- li $v0, 10 #exit
- syscall
- procedure:
- li $t0, 0
- li $t1, 0
- L_1:
- lb $t2, ($a0)
- slti $t2, $t2, 1
- beq $t2, 1, exit1
- addi $t0, $t0, 1
- addi $a0, $a0, 1
- j L_1
- exit1:
- L_2:
- lb $t2, ($a1)
- slti $t3, $t2, 1
- beq $t3, 1, exit2
- addi $t1, $t1, 1
- addi $a1, $a1, 1
- j L_2
- exit2:
- #removing endl from strings
- addi $t0, $t0, -1
- addi $t1, $t1, -1
- addi $a0, $a0, -1
- addi $a1, $a1, -1
- add $v0, $t0, $t1 #v0 = length_1 + length_2
- slt $t2, $t0, $t1
- beq $t2, 1, addfirst #if t0 < t1 concat first to second
- #else:
- #concatenate second to first
- la $v1, string1
- la $a1, string2
- li $t3, 0
- conc1:
- slt $t2, $t3, $t1
- beq $t2, 0, cexit1
- lb $t4, ($a1)
- sb $t4, ($a0)
- addi $t3, $t3, 1 #t2++
- addi $a1, $a1, 1 #a1++
- addi $a0, $a0, 1 #a0++
- j conc1
- cexit1:
- sb $0, ($a0) #null
- j end
- #concatenate first to second
- addfirst:
- la $v1, string2
- la $a0, string1
- li $t2, 0
- conc2:
- slt $t3, $t2, $t0
- beq $t3, 0, cexit2
- lb $t4, ($a0)
- sb $t4, ($a1)
- addi $t2, $t2, 1
- addi $a1, $a1, 1
- addi $a0, $a0, 1
- j conc2
- cexit2:
- sb $0, ($a1) #null
- end:
- jr $ra
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement