Can anyone help me with this password program?

According to my assignment requirement I wrote this program, but still doesn't work......can someone help.....please
Here is my exercise:

"Write assembly code in ASSEMBLY LANGUAGE to read a password from the keyboard. Display the message ' Enter Password: ' and echo each character that the user types as an asterisk(*). If the user types a backspace character ( which enters as the number 8), erase the last character typed by displaying a backspace. a space and another backspace. You shouldn't erase beyond the beginning of the password so you need to keep a count of the asterisks on the screen."

Here is my code

.model small
.586
.stack 100h
INCLUDE C:\MASM615\Programs\PCMAC.INC
.DATA

MSG DB 'Enter Password: $'
PWD DB 'abcd'
Correct db 'Password Correct!$'
WRONG DB 'Password not correct! Please Enter again!$'

.CODE

PASSWORD PROC

START:
     mov ax, @DATA
     mov ds, ax
     mov di, offset pwd
     _Begin
     _PutStr msg


GetLoop:    

     _GetCh noEcho
     cmp al, 13
     je COMPARE
     cmp al, 'a'
     jnae EchoIt
     cmp al, 'z'
     jnbe EchoIt
     add al, '*'-'a'

     cmp al, 8
     je BACKSPACE

BACKSPACE:
    mov ah, 0Eh
    mov al, 8
    int 10h
    mov al, 32
    int 10h
    mov al, 8
    int 10h
    jmp GetLoop

COMPARE:
    mov dl, [di]
    mov ah, 8h
    int 21h
    cmp dl, al
    je DONE
    jmp NOTCORRECT

EchoIt:
     _PutCh al
     jmp GetLoop


DONE:
    _PutStr Correct
     _Exit 0

NOTCORRECT:
    _PutStr WRONG
    jmp START


PASSWORD ENDP
END PASSWORD