Advertisement
Guest User

Untitled

a guest
Nov 9th, 2018
223
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MPASM 2.48 KB | None | 0 0
  1. .text
  2. # Вводим строку, которую хотим зашифровать
  3. li $v0, 8
  4. la $a0, input_address
  5. li $a1, 10
  6. syscall
  7.  
  8.  
  9. for_char_in_input_string:
  10.     lb $t0, input_address($t7) #Загружаем первый байт (первый символ) в регистр $t0.
  11.     beq $t0, 0xA, exit_for_char_in_input_string #Если конец строки (\n), то прекращаем читать её.
  12.    
  13.     #Находим позицию нашего символа в таблице.
  14.     #Цикл проходится по всей таблице, пока не будет найдено совпадение.
  15.     li $t1, 0 #Здесь будет позиция (смещение).
  16.     find_char_in_table_loop:
  17.         lb $t2, table($t1) #Загружаем символ из таблицы по смещению $t1.
  18.         beq $t0, $t2, exit_find_char_in_table_loop #Сравниваем с символом из введённой строки.
  19.         add $t1, $t1, 1 #Если не совпало, то увеличиваем смещение...
  20.         b find_char_in_table_loop #...и переходим к следующей итерации.
  21.     exit_find_char_in_table_loop:
  22.    
  23.     #Находим номера столбца и строки в таблице.
  24.     li $t3, 6 #Для деления.
  25.     div $t1, $t3 #Делим смещение символа в таблице на ширину таблицы без изменения значений регистров.
  26.     mflo $t4 #Записываем количество делений (номер СТРОКИ). Количество делений лежит в недоступном регистре lo.
  27.     #Получаем номер столбца (смещение_символа-номер_строки*ширину_таблицы)
  28.     mul $t5, $t4, 6 #номер_строки*ширину_таблицы
  29.     sub $t6, $t1, $t5 #В $t6 теперь номер СТОЛБЦА.
  30.    
  31.     #Выводим символы
  32.     li $v0, 11
  33.     lb $a0, table_desc($t4)
  34.     syscall
  35.     lb $a0, table_desc($t6)
  36.     syscall
  37.    
  38.    
  39.     add $t7, $t7, 1 #Увеличиваем смещение внутри введённой строки.
  40.     b for_char_in_input_string #Переходим к следующей итерации цикла.
  41. exit_for_char_in_input_string:
  42.  
  43. .data
  44. table_desc: .ascii "ADFGVX"
  45. table: .byte
  46. 'q' 'w' 'e' 'r' 't' 'y'
  47. 'u' 'i' 'o' 'p' 'a' 's'
  48. 'd' 'f' 'g' 'h' 'j' 'k'
  49. 'l' 'z' 'x' 'c' 'v' 'b'
  50. 'n' 'm' '1' '2' '3' '4'
  51. '5' '6' '7' '8' '9' '0'
  52. input_address: .word 0x10010040
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement