Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- section .data
- len equ 255
- section .bss
- string1 resb len
- string2 resb 255
- prov resb 255
- key1 resb 255
- strlen resb 4
- key2 resd 1
- section .text
- global _start
- KeyA:
- mov esi, 0
- .Cycle1:
- mov dl, byte [eax+esi]
- cmp dl, 0
- je Ret
- add [key2], dword 1
- inc esi
- loop .Cycle1
- Key:
- mov esi,0
- mov edi, 0
- mov ecx, [strlen]
- Cycle2:
- mov bl, [eax+esi]
- mov [key1 + edi], bl
- inc esi
- inc edi
- dec ecx
- cmp ecx, 0
- je Ret
- cmp esi, [key2]
- jge Zero
- jmp Cycle2
- Zero:
- mov esi, 0
- jmp Cycle2
- Encrypt:
- mov ecx, [strlen]
- mov esi, 0
- mov edi, 0
- mov ebx, 0
- Cikl:
- xor dx, dx
- movzx bp, byte [key1 + esi]
- movzx di, byte [string1 + esi]
- mov [prov + esi], di
- cmp di, 'A'
- jl Copy
- movzx di, byte [prov + esi]
- cmp di, 'Z'
- jle EncA
- movzx di, byte [prov + esi]
- cmp di, 'a'
- jl Copy
- movzx di, byte [prov + esi]
- cmp di, 'z'
- jle Enca
- movzx di, byte [prov + esi]
- cmp di, 'z'
- jg Copy
- Metka:
- cmp ecx, 0
- je Ret
- dec ecx
- inc esi
- jmp Cikl
- Copy:
- mov dl, byte [prov + esi]
- mov [string2 + esi], dl
- jmp Metka
- EncA:
- movzx di, byte [prov + esi]
- sub di, 'A'
- sub bp, 'a'
- add bp, di
- mov ax, bp
- mov bx, 26
- div bx
- add dl, 1*'A'
- mov [string2 + esi], dl
- jmp Metka
- Enca:
- movzx di, byte [prov + esi]
- add bp, di
- sub bp, 2*'a'
- mov ax, bp
- mov bx, 26
- div bx
- add dl, 1*'a'
- mov [string2 + esi], dl
- jmp Metka
- ret
- Ret:
- ret
- Exit:
- mov eax, 1
- int 80h
- _start:
- mov eax, 3
- mov ebx, 0
- mov ecx, string1
- mov edx, len
- int 80h
- cmp eax, 0
- je Exit
- mov [strlen], eax
- xor eax,eax
- mov eax, [esp+8]
- call KeyA
- call Key
- call Encrypt
- mov eax, 4
- mov ebx, 1
- mov ecx, string2
- mov edx, [strlen]
- int 80h
- mov eax, 1
- int 80h
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement