Guest User

Untitled

a guest
May 26th, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.65 KB | None | 0 0
  1. .data
  2. podajHaslo: .asciiz "Podaj klucz: "
  3. podajTekst: .asciiz "Podaj tekst: "
  4. podajDzialanie: .asciiz "S - szyfrowanie / D - deszyfrowanie: "
  5. klucz: .space 20 # s0
  6. tekst: .space 150 # s1
  7. dzialanie: .space 2 # s2
  8. str2: .asciiz "\nWpisano: "
  9.  
  10.  
  11. .text
  12. wezKlucz:
  13. la $a0, podajHaslo # załaduj wartość string do $a0 w celu wypisania
  14. li $v0, 4 # załaduj 4 do $v0 aby wywołać syscall do wypisania ascii
  15. syscall
  16.  
  17. li $v0, 8 # take in input
  18. la $a0, klucz # load byte space into address
  19. li $a1, 13 # allot the byte space for string
  20. move $s0, $a0 # save string to s0
  21. syscall
  22.  
  23. wezTekst:
  24. la $a0, podajTekst # załaduj wartość string do $a0 w celu wypisania
  25. li $v0, 4 # załaduj 4 do $v0 aby wywołać syscall do wypisania ascii
  26. syscall
  27.  
  28. li $v0, 8 # take in input
  29. la $a0, tekst # load byte space into address
  30. li $a1, 150 # allot the byte space for string
  31. move $s1, $a0 # save string to s1
  32. syscall
  33.  
  34. # sprawdzamy dlugosc klucza
  35. # t9 - dlugosc klucza
  36. li $t9, 0
  37. policzDlugoscKlucza:
  38. lb $t8, klucz($t9)
  39. beq $t8, '\n' policzonoKlucz
  40. addi $t9, $t9, 1
  41. j policzDlugoscKlucza
  42.  
  43. policzonoKlucz:
  44.  
  45. la $a0, podajDzialanie # załaduj wartość string do $a0 w celu wypisania
  46. li $v0, 4 # załaduj 4 do $v0 aby wywołać syscall do wypisania ascii
  47. syscall
  48.  
  49. li $v0, 8 # take in input
  50. la $a0, dzialanie # load byte space into address
  51. li $a1, 2 # allot the byte space for string
  52. move $s2, $a0 # save string to s1
  53. syscall
  54.  
  55. lb $s7, dzialanie($t7)
  56. li $a0, '\n'
  57. li $v0, 11
  58. syscall
  59.  
  60. beq $s7, 'S', zaszyfrujTekst
  61. beq $s7, 'D', rozszyfrujTekst
  62. j exit
  63.  
  64. #########################################################
  65. # t0 - indeks kolejnej litery tekstu
  66. # t1 - indeks kolejnej litery klucza
  67. # t3 - litera tekstu
  68. # t4 - litera klucza
  69. # t5 - reszta z dzielenia
  70. zaszyfrujTekst:
  71. li $t0, 0
  72. li $t1, 0 # wskaznik litery klucza
  73.  
  74. petla:
  75. lbu $t3, tekst($t0)
  76.  
  77. beq $t3, '\n', exit # jesli \n to zakoncz
  78. blt $t3, 'A', exit # jesli mniej niz A to zakoncz
  79. bgt $t3, 'Z', odejmij32Szyfr # jesli wiecej niz Z to zakoncz
  80. wrocOdejmij32Szyfr:
  81.  
  82. lbu $t4, klucz($t1)
  83. bgt $t4, 'Z', odejmijKlucz32Szyfr # jesli wiecej niz Z to zakoncz
  84. wrocOdejmijKlucz32Szyfr:
  85.  
  86. add $t3, $t3, $t4
  87. div $t3, $t3, 26
  88. mfhi $t3
  89. addi $t3, $t3, 65
  90.  
  91. addi $t0, $t0, 1
  92. addi $t1, $t1, 1
  93. bge $t1, $t9, zmienNaZeroSzyfrowanie
  94. wrocZmienNaZeroSzyfrowanie:
  95.  
  96. la $a0, ($t3)
  97. li $v0, 11
  98. syscall
  99. j petla
  100.  
  101. zmienNaZeroSzyfrowanie:
  102. li $t1, 0
  103. j wrocZmienNaZeroSzyfrowanie
  104.  
  105. odejmij32Szyfr:
  106. sub $t3, $t3, 32
  107. j wrocOdejmij32Szyfr
  108.  
  109. odejmijKlucz32Szyfr:
  110. sub $t4, $t4, 32
  111. j wrocOdejmijKlucz32Szyfr
  112.  
  113.  
  114. ##########################################################################
  115. rozszyfrujTekst:
  116. li $t0, 0
  117. li $t1, 0 # wskaznik litery klucza
  118.  
  119. petlaSzyfr:
  120. lbu $t3, tekst($t0)
  121.  
  122. beq $t3, '\n', exit # jesli \n to zakoncz
  123. blt $t3, 'A', exit # jesli mniej niz A to zakoncz
  124. bgt $t3, 'Z', odejmij32 # jesli wiecej niz Z to zakoncz
  125. wrocOdejmij32:
  126.  
  127. lbu $t4, klucz($t1)
  128. bgt $t4, 'Z', odejmijKlucz32 # jesli wiecej niz Z to zakoncz
  129. wrocOdejmijKlucz32:
  130.  
  131. sub $t3, $t3, $t4
  132. div $t3, $t3, 26
  133. mfhi $t3
  134. addi $t3, $t3, 65
  135.  
  136. blt $t3, 65, dodaj26
  137. wrocDodaj26:
  138.  
  139. addi $t0, $t0, 1
  140. addi $t1, $t1, 1
  141. bge $t1, $t9, zmienNaZero
  142. wrocZmienNaZero:
  143.  
  144. la $a0, ($t3)
  145. li $v0, 11
  146. syscall
  147. j petlaSzyfr
  148.  
  149. zmienNaZero:
  150. li $t1, 0
  151. j wrocZmienNaZero
  152.  
  153. dodaj26:
  154. addi $t3, $t3, 26
  155. j wrocDodaj26
  156.  
  157. odejmij32:
  158. sub $t3, $t3, 32
  159. j wrocOdejmij32
  160.  
  161. odejmijKlucz32:
  162. sub $t4, $t4, 32
  163. j wrocOdejmijKlucz32
  164.  
  165. exit:
Add Comment
Please, Sign In to add comment