Advertisement
first_one_dot_com

Univ ext 1lab

Oct 4th, 2019
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. section .data
  2.  
  3.     msg:    db  "Hello world!"
  4.     len:    equ $ - msg
  5.     endl:   db 0xA
  6.     endlen: equ $ - endl
  7. section .text
  8.  
  9. global _start
  10.  
  11.     print_endl:
  12.         mov ecx, endl
  13.         mov edx, endlen
  14.         mov ebx, 1           ; Дескриптор вывода
  15.         mov eax, 4           ; Системный call    
  16.         int 80h
  17.     ret
  18.  
  19.     print:
  20.         mov ebx, 1           ; Дескриптор вывода
  21.         mov eax, 4           ; Системный call    
  22.         int 80h
  23.     ret
  24.     ;ключ, открытый текст, закрытый текст, длина
  25.     crypt_func:
  26.         .crypton:
  27.             mov eax, ebx
  28.             mov esi, msg
  29.             mov edi, [esi]
  30.             add [edi], eax
  31.             mov edx, encrypted
  32.             mov edx, [edi]
  33.             inc edx
  34.             inc esi
  35.         loop crypton
  36.     ret
  37. _start:
  38.     ;заполнение массива Hello world'ом
  39.     mov ecx, len
  40.     mov ebx, encrypted   ;адрес encrypted[0]
  41.     mov eax, msg         ;адрес msg[0]
  42.     _adder:            
  43.         mov edx, [eax]   ;через edx заполняет encrypted элементами из msg  
  44.         mov [ebx], edx
  45.         inc eax          ;pointer +=1
  46.         inc ebx          ;pointer +=1
  47.     loop _adder    
  48.  
  49.     ;вывыод заполненного массива
  50.     mov ecx, encrypted
  51.     mov edx, len
  52.     call print
  53.    
  54.     ;endline (\n)
  55.     call print_endl
  56.    
  57.  
  58.     mov ecx, len
  59.     mov ebx, encrypted
  60.     _encrypt:
  61.         add [ebx], byte 3
  62.         inc ebx
  63.     loop _encrypt    
  64.  
  65.     ;вывод инкрипт массива    
  66.     mov ecx, encrypted
  67.     mov edx, len
  68.     call print
  69.  
  70.     ;endline (\n)
  71.     call print_endl
  72.  
  73.    
  74.     ;тут должен быть _reverse "строки"
  75.    
  76.     ;заполнение decrypted элементами encrypted
  77.     mov ecx, len
  78.     mov ebx, decrypted
  79.     mov eax, encrypted
  80.     _cryptadder:
  81.         mov edx, [eax]   ;через edx заполняет encrypted элементами из msg  
  82.         mov [ebx], edx
  83.         inc eax          ;pointer +=1
  84.         inc ebx          ;pointer +=1
  85.     loop _cryptadder
  86.  
  87.     ;вывод декрипт массива
  88.     mov ecx, decrypted
  89.     mov edx, len
  90.     call print
  91.  
  92.     ;endline (\n)
  93.     call print_endl
  94.    
  95.    
  96.     mov ecx, len
  97.     mov ebx, decrypted
  98.     _decrypt:
  99.         sub [ebx], byte 3
  100.         inc ebx
  101.     loop _decrypt
  102.    
  103.     ;вывод декрипт массива
  104.     mov ecx, decrypted
  105.     mov edx, len
  106.     call print  
  107.  
  108.     ;endline (\n)
  109.     call print_endl
  110.  
  111.  
  112.  
  113.     mov     eax, 1
  114.     int     0x80
  115.  
  116. section .bss
  117.  
  118.     encrypted resb len
  119.     decrypted resb len
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement