Write a program in 8086 assembly language that checks an input string against a password string stored in the memory and outputs an appropriate message if the strings are not equal. 7m Jun2006
DATA SEGMENT
MSG1 DB 10,13,’ENTERED PASSWORD : $’
MSG2 DB 10,13,’YOU HAVE ENTERED WRONG PASSWORD !!! $’
MSG3 DB 10,13,’YOU HAVE ENTERED CORRECT PASSWORD ! $’
MSG4 DB 10,13,’PASSWORD LENGTH IS NOT EQUAL $’
STR1 DB “NITIN”
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
CMP L1,5
JNE NOTEQUAL
LEA SI,STR1
LEA DI,P11
MOV CX,5
CHECK:
MOV AL,[SI]
CMP [DI],AL
JNE NOPASWD
INC SI
INC DI
LOOP CHECK
DISPLAY MSG3
JMP EXIT
NOTEQUAL:
DISPLAY MSG4
NOPASWD:
DISPLAY MSG2
JMP EXIT
EXIT: MOV AH,4CH
INT 21H
CODE ENDS
END START
Program code: –
[codesyntax lang=”asm”]
DATA SEGMENT
MSG1 DB 10,13,’ENTERED PASSWORD : $’
MSG2 DB 10,13,’YOU HAVE ENTERED WRONG PASSWORD !!! $’
MSG3 DB 10,13,’YOU HAVE ENTERED CORRECT PASSWORD ! $’
MSG4 DB 10,13,’PASSWORD LENGTH IS NOT EQUAL $’
STR1 DB “NITIN”
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
CMP L1,5
JNE NOTEQUAL
LEA SI,STR1
LEA DI,P11
MOV CX,5
CHECK:
MOV AL,[SI]
CMP [DI],AL
JNE NOPASWD
INC SI
INC DI
LOOP CHECK
DISPLAY MSG3
JMP EXIT
NOTEQUAL:
DISPLAY MSG4
NOPASWD:
DISPLAY MSG2
JMP EXIT
EXIT: MOV AH,4CH
INT 21H
CODE ENDS
- END START
[/codesyntax]
Screen shots: –
After Execution: –