南邮汇编实验二(用户登录)

.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

  • 6
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值