南郵匯編實驗二(用戶登錄)

.486
DATA SEGMENT USE16
MESG1 DB 'INPUT USER:$'
MESG2 DB 'INPUT PWD:$'
USER  DB 20
      DB ?
      DB 20 DUP(?)
PWD   DB 20 DUP(?)
PWDLENGTH DB 0

U     DB 'B14040411'
ULENGTH EQU $-U

P     DB 'B14040411'
MLENGTH EQU $-P

WELCOME DB 'WELCOME$'
ERROR DB 'USER ERROR$'
ERROR1 DB 'PASSWORD ERROR$'
DATA ENDS
CODE SEGMENT USE16
ASSUME CS:CODE,DS:DATA
BEG:  MOV AX,DATA
      MOV DS,AX
      
NEXT0:
	  MOV PWDLENGTH,0
	  MOV AH,9
      MOV DX,OFFSET MESG1
      INT 21H
      
      MOV AH,0AH
      MOV DX,OFFSET USER
      INT 21H

      MOV AH,2
      MOV DL,0AH
      INT 21H
      
      MOV AH,9
      MOV DX,OFFSET MESG2
      INT 21H
      
      MOV CX,MLENGTH
      MOV SI,OFFSET PWD
NEXT1:MOV AH,07H       ;無回顯從鍵盤讀入一個字符
      INT 21H
      CMP AL,0DH
      JE IND
      MOV [SI],AL
      MOV AH,2
      MOV DX,'*'
      INT 21H
      INC PWDLENGTH
      INC SI
      ;CMP BYTE PTR [SI-1],0DH   
      ;JNZ NEXT1
      JMP NEXT1
 
IND:  MOV AH,2
      MOV DL,0AH
      INT 21H
      

      ;MOV BX,OFFSET U
     
      MOV BX,OFFSET USER+1
      MOV AL,[BX]
      CMP AL,ULENGTH        ;比較用戶名長度
      JNZ UERR
      
      MOV BX,OFFSET U
      MOV SI,OFFSET USER+2
      MOV CX,ULENGTH
NEXT2:
	  MOV AL,[BX]
      CMP [SI],AL
      JNZ UERR
      INC SI
      INC BX
      LOOP NEXT2
      

      MOV BX,OFFSET P
      MOV SI,OFFSET PWD    
      MOV CL,PWDLENGTH
      MOV CH,0
	  CMP CX,MLENGTH      ;比較密碼長度
	  JNZ PERR
	  MOV CX,MLENGTH
NEXT3:
	  MOV AL,[BX]
      CMP [SI],AL
      JNZ PERR
      INC SI
      INC BX
      LOOP NEXT3
      JMP WEL
      
UERR: MOV AH,9
      MOV DX,OFFSET ERROR
      INT 21H
      MOV AH,2
      MOV DL,0AH
      INT 21H
      JMP NEXT0

PERR: MOV AH,9
      MOV DX,OFFSET ERROR1
      INT 21H
      MOV AH,2
      MOV DL,0AH
      INT 21H
      JMP NEXT0
      
WEL:  MOV AH,9
      MOV DX,OFFSET WELCOME
      INT 21H
      JMP EXIT
EXIT: MOV AH,4CH
      INT 21H
CODE ENDS
      END BEG

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章