Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .data
- message1: .asciiz "\nVnesete go prviot zbor: "
- message2: .asciiz "\nVnesete go vtoriot zbor: "
- firstWord: .space 101
- secondWord: .space 101
- finalWord: .space 101
- message3: .asciiz "\nDolzinata na prviot vnesen zbor iznesuva: "
- message4: .asciiz "\nDolzinata na vtoriot vnesen zbor iznesuva: "
- message5: .asciiz "\nKoga pokratkiot zbor kje se zalepi na podolgiot se dobiva zborot: "
- message6: .asciiz "\nCija dolzina iznesuva: "
- .text
- # main
- FirstWord: # go vnesuvame prviot zbor od tastatura
- la $a0, message1 # se pecati poraka 1 (message 1) pred da se vnese prviot zbor od tastatura
- li $v0, 4
- syscall
- la $a0, firstWord
- li $a1, 101
- li $v0, 8
- syscall
- la $t0, firstWord # adresata na prviot string
- # go vnesuvame vtoriot zbor od tastatura
- SecondWord:
- la $a0, message2 # se pecati poraka 2 (message 2) pred da se vnese vtoriot zbor od tastatura
- li $v0, 4
- syscall
- la $a0, secondWord
- li $a1, 101
- li $v0, 8
- syscall
- la $t1,secondWord # adresata na vtoriot string
- jal FirstLoop
- li $v0, 10
- syscall
- # end of main
- #ciklusi za broenje na znacite vo dvata vneseni stringovi i pecatenje na ekran na istite
- FirstLoop:
- addi $t6, $zero, 0
- lbu $t2, 0($t0)
- beq $t2, 10, EndFirstLoop #ako e = ’\n’ zavrsi go broenjeto na znaci za prvata vnesena niza
- addi $t3,$t3,1 # azuriranje na brojac vo koj se cuva izmerenata dolzina na prviot vnesen string
- addi $t0, $t0, 1
- j FirstLoop
- EndFirstLoop:
- la $a0,message3
- li $v0,4
- syscall
- add $a0,$t3,$zero # pecatenje na dolzinata na prviot vnesen string od tastatura
- li $v0, 1
- syscall
- SecondLoop:
- lbu $t2, 0($t1)
- beq $t2, 10, EndSecondLoop # proverka na tekovniot znak, ako e '\n' zavrsi go broenjeto na znaci
- addi $t4,$t4,1 # azuriranje na brojac vo koj se cuva izmerenata dolzina na vtoriot vnesen string
- addi $t1, $t1, 1
- j SecondLoop
- EndSecondLoop:
- la $a0,message4
- li $v0,4
- syscall
- addi $a0,$t4,0 # pecatenje na dolzinata na vtoriot vnesen string od tastatura
- li $v0, 1
- syscall
- # kraj na ciklusi za broenje i pecatenje na brojot na znaci na dvata vneseni stringovi
- # analiza na informacijata za podolg string, da znaeme po koj redosled da gi zalepime
- slt $t7,$t3,$t4
- beq $t7,1,LongerSecond
- LongerFirst:
- la $t1,secondWord
- # spojuvanje na stringovite
- ThirdLoop:
- lbu $t2, 0($t1)
- beq $t2, 10, EndThirdLoop #ako e = ’\n’ izlezi
- sb $t2,0($t0)
- addi $t3,$t3,1
- addi $t0,$t0,1
- addi $t1, $t1, 1
- j ThirdLoop
- EndThirdLoop:
- la $a0,message5
- li $v0,4
- syscall
- la $a0,firstWord
- li $v0,4
- syscall
- la $a0,message6
- li $v0,4
- syscall
- add $a0,$t3,$zero
- li $v0,1
- syscall
- j End
- LongerSecond:
- la $t0,firstWord
- FinalLoop:
- lbu $t2, 0($t0)
- beq $t2, 10, EndFinalLoop
- sb $t2,0($t1)
- addi $t4,$t4,1
- addi $t0, $t0, 1
- addi $t1, $t1, 1
- j FinalLoop
- EndFinalLoop:
- la $a0,message5 # pecatenje na stringot dobien so spojuvanje na dvata vneseni stringa
- li $v0,4
- syscall
- la $a0,secondWord
- li $v0,4
- syscall
- la $a0,message4
- li $v0,4
- syscall
- add $a0,$t4,$zero
- li $v0,1
- syscall
- End:
- jr $ra
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement