Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .data
- podajHaslo: .asciiz "Podaj klucz: "
- podajTekst: .asciiz "Podaj tekst: "
- podajDzialanie: .asciiz "S - szyfrowanie / D - deszyfrowanie: "
- klucz: .space 20 # s0
- tekst: .space 150 # s1
- dzialanie: .space 2 # s2
- str2: .asciiz "\nWpisano: "
- .text
- wezKlucz:
- la $a0, podajHaslo # załaduj wartość string do $a0 w celu wypisania
- li $v0, 4 # załaduj 4 do $v0 aby wywołać syscall do wypisania ascii
- syscall
- li $v0, 8 # take in input
- la $a0, klucz # load byte space into address
- li $a1, 13 # allot the byte space for string
- move $s0, $a0 # save string to s0
- syscall
- wezTekst:
- la $a0, podajTekst # załaduj wartość string do $a0 w celu wypisania
- li $v0, 4 # załaduj 4 do $v0 aby wywołać syscall do wypisania ascii
- syscall
- li $v0, 8 # take in input
- la $a0, tekst # load byte space into address
- li $a1, 150 # allot the byte space for string
- move $s1, $a0 # save string to s1
- syscall
- # sprawdzamy dlugosc klucza
- # t9 - dlugosc klucza
- li $t9, 0
- policzDlugoscKlucza:
- lb $t8, klucz($t9)
- beq $t8, '\n' policzonoKlucz
- addi $t9, $t9, 1
- j policzDlugoscKlucza
- policzonoKlucz:
- la $a0, podajDzialanie # załaduj wartość string do $a0 w celu wypisania
- li $v0, 4 # załaduj 4 do $v0 aby wywołać syscall do wypisania ascii
- syscall
- li $v0, 8 # take in input
- la $a0, dzialanie # load byte space into address
- li $a1, 2 # allot the byte space for string
- move $s2, $a0 # save string to s1
- syscall
- lb $s7, dzialanie($t7)
- li $a0, '\n'
- li $v0, 11
- syscall
- beq $s7, 'S', zaszyfrujTekst
- beq $s7, 'D', rozszyfrujTekst
- j exit
- #########################################################
- # t0 - indeks kolejnej litery tekstu
- # t1 - indeks kolejnej litery klucza
- # t3 - litera tekstu
- # t4 - litera klucza
- # t5 - reszta z dzielenia
- zaszyfrujTekst:
- li $t0, 0
- li $t1, 0 # wskaznik litery klucza
- petla:
- lbu $t3, tekst($t0)
- beq $t3, '\n', exit # jesli \n to zakoncz
- blt $t3, 'A', exit # jesli mniej niz A to zakoncz
- bgt $t3, 'Z', odejmij32Szyfr # jesli wiecej niz Z to zakoncz
- wrocOdejmij32Szyfr:
- lbu $t4, klucz($t1)
- bgt $t4, 'Z', odejmijKlucz32Szyfr # jesli wiecej niz Z to zakoncz
- wrocOdejmijKlucz32Szyfr:
- add $t3, $t3, $t4
- div $t3, $t3, 26
- mfhi $t3
- addi $t3, $t3, 65
- addi $t0, $t0, 1
- addi $t1, $t1, 1
- bge $t1, $t9, zmienNaZeroSzyfrowanie
- wrocZmienNaZeroSzyfrowanie:
- la $a0, ($t3)
- li $v0, 11
- syscall
- j petla
- zmienNaZeroSzyfrowanie:
- li $t1, 0
- j wrocZmienNaZeroSzyfrowanie
- odejmij32Szyfr:
- sub $t3, $t3, 32
- j wrocOdejmij32Szyfr
- odejmijKlucz32Szyfr:
- sub $t4, $t4, 32
- j wrocOdejmijKlucz32Szyfr
- ##########################################################################
- rozszyfrujTekst:
- li $t0, 0
- li $t1, 0 # wskaznik litery klucza
- petlaSzyfr:
- lbu $t3, tekst($t0)
- beq $t3, '\n', exit # jesli \n to zakoncz
- blt $t3, 'A', exit # jesli mniej niz A to zakoncz
- bgt $t3, 'Z', odejmij32 # jesli wiecej niz Z to zakoncz
- wrocOdejmij32:
- lbu $t4, klucz($t1)
- bgt $t4, 'Z', odejmijKlucz32 # jesli wiecej niz Z to zakoncz
- wrocOdejmijKlucz32:
- sub $t3, $t3, $t4
- div $t3, $t3, 26
- mfhi $t3
- addi $t3, $t3, 65
- blt $t3, 65, dodaj26
- wrocDodaj26:
- addi $t0, $t0, 1
- addi $t1, $t1, 1
- bge $t1, $t9, zmienNaZero
- wrocZmienNaZero:
- la $a0, ($t3)
- li $v0, 11
- syscall
- j petlaSzyfr
- zmienNaZero:
- li $t1, 0
- j wrocZmienNaZero
- dodaj26:
- addi $t3, $t3, 26
- j wrocDodaj26
- odejmij32:
- sub $t3, $t3, 32
- j wrocOdejmij32
- odejmijKlucz32:
- sub $t4, $t4, 32
- j wrocOdejmijKlucz32
- exit:
Add Comment
Please, Sign In to add comment