| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- jumps
- .model small
- .code
- org 100h
- start: mov di, 80h
- cmp byte ptr [di], 0
- je errusg
- mov al, [di]
- mov ah, 0
- mov dx, ax
- dec dx
- mov di, 82h
- mov si, offset fname1
- mov cx, 0
- loop1: mov al, [di]
- mov [si], al
- inc di
- inc si
- inc cx
- cmp cx, dx
- je errusg
- cmp byte ptr [di], ' '
- je nextloop2
- jmp loop1
- nextloop2:
- mov byte ptr [si], 0
- loop2: inc di
- inc cx
- cmp byte ptr [di], ' '
- je loop2
- mov si, offset fname2
- loop3: mov al, [di]
- mov [si], al
- inc di
- inc si
- inc cx
- cmp cx, dx
- je begcopy
- cmp byte ptr [di], ' '
- je begcopy
- jmp loop3
- begcopy:mov byte ptr [si], 0
- mov ah, 09h
- mov dx, offset inpstr
- int 21h
- mov si, offset passwd
- mov di, 0
- loop4: mov ah, 08h
- int 21h
- cmp al, 0dh
- je passend
- mov [si], al
- inc si
- inc di
- mov ah, 02h
- mov dl, '*'
- int 21h
- jmp loop4
- passend:mov si, offset passlen
- mov ax, di
- mov byte ptr [si],al
- mov ax, 3d00h
- mov dx, offset fname1
- int 21h
- jc openerr
- mov si, ax
- mov ah, 3ch
- mov cx, 0
- mov dx, offset fname2
- int 21h
- jc openerr
- mov di, ax
- ;---------------------------------------------
- loop8: mov bx, si
- mov ah, 3fh
- mov dx, offset buf
- mov cx, 255
- int 21h
- PUSH ax
- PUSH bx
- PUSH dx
- PUSH si
- PUSH di
- mov si, offset passwd
- mov di, offset passlen
- mov dl, [di]
- mov dh, 0
- mov di, offset buf
- mov cx, ax
- mov bx, 0
- loop5: mov al, [si]
- xor [di], al
- inc di
- inc si
- inc bx
- mov al, bl
- mov ah, 0
- div dl
- cmp ah, 0
- je newchange
- contin: cmp bx, cx
- je looopend
- jmp loop5
- newchange:
- mov si, offset passwd
- jmp contin
- looopend:
- POP di
- POP si
- POP dx
- POP bx
- POP ax
- mov ah, 40h
- mov bx, di
- int 21h
- cmp ax, 255
- jb loopend
- jmp loop8
- loopend:mov bx,si
- mov ah, 3eh
- int 21h
- mov bx, di
- mov ah, 3eh
- int 21h
- int 20h
- ;---------------------------------------
- errusg: mov ah, 09h
- mov dx, offset errstr
- int 21h
- int 20h
- openerr:mov ah, 09h
- mov dx, offset errstr2
- int 21h
- int 20h
- errstr db 'usage: "crypt.exe source dest"$'
- errstr2 db 'File not found!$'
- inpstr db 'Enter the password:$'
- passwd db 50 dup (?)
- passlen db ?
- fname1 db 13 dup (?)
- fname2 db 13 dup (?)
- buf db 256 dup (?)
- end start
|