Title Encryption program ;----------------------------------------------------------- ;Discription: TO encrypt data from a file. ;Author: Dan Lee, Sun Yat-sen University All rights reserved ;----------------------------------------------------------- .model small, c .386 Encrypt proto cell:ptr byte ; function protatype count=30 keyboard struct maxin byte count incount byte? buf byte count dup(?) keyboard ends .data BufSize =500 kydbdata keyboard <> prompt byte"Please input file name under current directory...",10,13,'$' fmsg byte"file not found...",10,13,'$' Handle WORD ? buffer BYTE BufSize DUP(?) bytesRead WORD ? .code .startup again: ;Prompt to input file name mov dx,offset Prompt mov ah,9h int 21h ;Get file name from cosole mov ah,0Ah mov dx,offset kydbdata int 21h ; input file name mov bl,kydbdata.incount cmp bl,0 je quit ; if no input filename, then exit the program mov di,offset kydbdata mov al,kydbdata.incount xor ah,ah add di,ax mov ax,2 add di,ax mov byte ptr [di],0 ; To make the filename end with 0 ; Open the input file mov ax,716Ch ; extended create or open mov bx,0 ; mode = read-only mov cx,0 ; normal attribute mov dx,1 ; action: open mov si,OFFSET kydbdata.buf int 21h ; call MS-DOS jnc succ ; quit if error mov dx,offset fmsg mov ah,9h int 21h jmp again succ: mov Handle,ax ; Read the input file mov ah,3Fh ; read file or device mov bx,Handle ; file handle mov cx,BufSize ; max bytes to read mov dx,OFFSET buffer ; buffer pointer int 21h jc quit ; quit if error mov bytesRead,ax ; Display the buffer mov ah,40h ; write file or device mov bx,1 ; console output handle mov cx,bytesRead ; number of bytes mov dx,OFFSET buffer ; buffer pointer int 21h jc quit ; quit if error ; Close the file mov ah,3Eh ; function: close file mov bx,Handle ; input file handle int 21h ; call MS-DOS jc quit ; quit if error ;Encrypttion procession mov cx,bytesRead mov di,OFFSET buffer mark: invoke Encrypt,di Inc di loop mark call WriteSpace ; Write Spaces to seperate the output call WriteSpace call WriteSpace ; Display the buffer mov ah,40h ; write file or device mov bx,1 ; console output handle mov cx,bytesRead ; number of bytes mov dx,OFFSET buffer ; buffer pointer int 21h jc quit ; Reopen the input file for write mov ax,716Ch ; extended create or open mov bx,1 ; mode = write mov cx,0 ; normal attribute mov dx,1 ; action: open mov si,OFFSET kydbdata.buf int 21h ; call MS-DOS jc quit ; quit if error mov Handle,ax ; save handle ; Write buffer to new file mov ah,40h ; write file or device mov bx,Handle ; output file handle mov cx,bytesRead ; number of bytes mov dx,OFFSET buffer ; buffer pointer int 21h jc quit ; quit if error ; Close the file mov ah,3Eh ; function: close file mov bx,Handle ; output file handle int 21h ; call MS-DOS quit: .exit 0 ;----------------------------------------------------------- ;Discription:This procedure implement Encrypting data ; using the demand algorithm of the book ; design by Dan Lee ;Recives: one bytechar of its address ;Return: explicitly nothing, but in fact a string of ; characters by passing by reference ;----------------------------------------------------------- Encrypt proc cell:ptr byte ;passing by reference push si push ax mov si,cell ; get address mov al,[si] ; get element .if (AL>='A')&& (AL<='Z') ; process mov al,'Z' sub al,[si] add al,'A' mov [si],al .endif .if (AL>='a')&& (AL<='z') mov al,'z' sub al,[si] add al,'a' mov [si],al .endif pop ax pop si ret Encrypt endp ;---------------------------------------------------------- WriteSpace PROC ; Write a single space to standard output. ; This procedure is copied from Assembly Language for ; Intel-based Computers fourth edition by Kip R.Irvine ;---------------------------------------------------------- push ax mov ah,2 ; function: display character mov dl,20h ; 20h = space int 21h pop ax ret WriteSpace ENDP end
Title Encryption program;-----------------------------------------------------------;Discription: TO encrypt data from a file.;Author: Dan Lee, Sun Yat-sen University All rights reserved;----------