An Assembly Language program two subroutines encrypting and decrypting – IGNOU MCA Assignment 2013

By | April 15, 2014

MASTER OF COMPUTER APPLICATIONS
Course Code : MCSL-017
Course Title : C and Assembly Language Programming
Assignment Number : MCA(1)/L017/Assign/2013 

 

Write a Program in assembly language that has two subroutines: One for encrypting alphabets of a string and second for decrypting the encoded string. In Encryption, simply convert a character /number into its predefined numerical/character value. Decryption is a reverse process of encryption. Write suitable Main program in C that calls these function. Test your program suitably

 

 DATA SEGMENT
    MSG1 DB 10,13,’ENTER STRING HERE :- $’   
    MSG2 DB 10,13,’ENCRYPTED STRING IS :- $’
    MSG3 DB 10,13,’DECRYPTED STRING IS : $’
   
    P1 LABEL BYTE
    M1 DB 0FFH
    L1 DB ?
    P11 DB 0FFH DUP (‘$’)
   
DATA ENDS

DISPLAY MACRO MSG
    MOV AH,9
    LEA DX,MSG
    INT 21H
ENDM   
CODE SEGMENT
    ASSUME CS:CODE,DS:DATA
START:
        MOV AX,DATA
        MOV DS,AX                
               
        DISPLAY MSG1
       
        LEA DX,P1
        MOV AH,0AH    
        INT 21H
                      
        LEA SI,P11
        MOV CL,L1
        CALL ENCRYPT
       
        DISPLAY MSG2
        DISPLAY P11
                               
        LEA SI,P11
        MOV CL,L1
        CALL ENCRYPT
       
        DISPLAY MSG3
        DISPLAY P11
       
        MOV AH,4CH
        INT 21H
CODE ENDS

ENCRYPT PROC NEAR
        MOV CH,0       
CHECK1:
        CMP [SI],2FH
        JB DONE1
        CMP [SI],3AH
        JB NUM1
       
        CMP [SI],41H
        JB DONE1
        CMP [SI],5BH
        JB UPR1
       
        CMP [SI],61H
        JB DONE1
        CMP [SI],7BH
        JB LWR1
       
NUM1:    CMP [SI],35H
        JB LNUM1
        SUB [SI],05H
        JMP DONE1
   LNUM1:    
        ADD [SI],05H
        JMP DONE1   
       
UPR1:    CMP [SI],4EH
        JB LUPR1
        SUB [SI],0DH
        JMP DONE1
   LUPR1:    
        ADD [SI],0DH
        JMP DONE1

LWR1:    CMP [SI],6EH
        JB LLWR1
        SUB [SI],0DH
        JMP DONE1
   LLWR1:    
        ADD [SI],0DH
             
DONE1:       
        INC SI
        LOOP CHECK1
       RET
ENCRYPT ENDP

DECRYPT PROC NEAR
        MOV CH,0       
CHECK2:
        CMP [SI],2FH
        JB DONE2
        CMP [SI],3AH
        JB NUM2
       
        CMP [SI],41H
        JB DONE2
        CMP [SI],5BH
        JB UPR2
       
        CMP [SI],61H
        JB DONE2
        CMP [SI],7BH
        JB LWR2
       
NUM2:   CMP [SI],35H
        JB LNUM2
        ADD [SI],05H
        JMP DONE2
   LNUM2:    
        SUB [SI],05H
        JMP DONE2   
       
UPR2:    CMP [SI],4EH
        JB LUPR2
        ADD [SI],0DH
        JMP DONE2
   LUPR2:    
        SUB [SI],0DH
        JMP DONE2

LWR2:    CMP [SI],6EH
        JB LLWR2
        ADD [SI],0DH
        JMP DONE2
   LLWR2:    
        SUB [SI],0DH
             
DONE2:       
        INC SI
        LOOP CHECK2
       RET
DECRYPT ENDP
   
END START

 

program code :

[codesyntax lang=”asm” lines=”normal”]

 DATA SEGMENT
    MSG1 DB 10,13,’ENTER STRING HERE :- $’   
    MSG2 DB 10,13,’ENCRYPTED STRING IS :- $’
    MSG3 DB 10,13,’DECRYPTED STRING IS : $’
   
    P1 LABEL BYTE
    M1 DB 0FFH
    L1 DB ?
    P11 DB 0FFH DUP (‘$’)
   
DATA ENDS

DISPLAY MACRO MSG
    MOV AH,9
    LEA DX,MSG
    INT 21H
ENDM   
CODE SEGMENT
    ASSUME CS:CODE,DS:DATA
START:
        MOV AX,DATA
        MOV DS,AX                
               
        DISPLAY MSG1
       
        LEA DX,P1
        MOV AH,0AH    
        INT 21H
                      
        LEA SI,P11
        MOV CL,L1
        CALL ENCRYPT
       
        DISPLAY MSG2
        DISPLAY P11
                               
        LEA SI,P11
        MOV CL,L1
        CALL ENCRYPT
       
        DISPLAY MSG3
        DISPLAY P11
       
        MOV AH,4CH
        INT 21H
CODE ENDS

ENCRYPT PROC NEAR
        MOV CH,0       
CHECK1:
        CMP [SI],2FH
        JB DONE1
        CMP [SI],3AH
        JB NUM1
       
        CMP [SI],41H
        JB DONE1
        CMP [SI],5BH
        JB UPR1
       
        CMP [SI],61H
        JB DONE1
        CMP [SI],7BH
        JB LWR1
       
NUM1:    CMP [SI],35H
        JB LNUM1
        SUB [SI],05H
        JMP DONE1
   LNUM1:    
        ADD [SI],05H
        JMP DONE1   
       
UPR1:    CMP [SI],4EH
        JB LUPR1
        SUB [SI],0DH
        JMP DONE1
   LUPR1:    
        ADD [SI],0DH
        JMP DONE1

LWR1:    CMP [SI],6EH
        JB LLWR1
        SUB [SI],0DH
        JMP DONE1
   LLWR1:    
        ADD [SI],0DH
             
DONE1:       
        INC SI
        LOOP CHECK1
       RET
ENCRYPT ENDP

DECRYPT PROC NEAR
        MOV CH,0       
CHECK2:
        CMP [SI],2FH
        JB DONE2
        CMP [SI],3AH
        JB NUM2
       
        CMP [SI],41H
        JB DONE2
        CMP [SI],5BH
        JB UPR2
       
        CMP [SI],61H
        JB DONE2
        CMP [SI],7BH
        JB LWR2
       
NUM2:   CMP [SI],35H
        JB LNUM2
        ADD [SI],05H
        JMP DONE2
   LNUM2:    
        SUB [SI],05H
        JMP DONE2   
       
UPR2:    CMP [SI],4EH
        JB LUPR2
        ADD [SI],0DH
        JMP DONE2
   LUPR2:    
        SUB [SI],0DH
        JMP DONE2

LWR2:    CMP [SI],6EH
        JB LLWR2
        ADD [SI],0DH
        JMP DONE2
   LLWR2:    
        SUB [SI],0DH
             
DONE2:       
        INC SI
        LOOP CHECK2
       RET
DECRYPT ENDP
   
END START

[/codesyntax]

Screen shots :-

Asm_program_Encrpt_Decrypt

Output :-

Asm_program_Encrpt_Decrypt_Output

Leave a Reply