题目:程序执行后,给出操作提示,请用户输入用户名和密码;用户在输入密码时,程序不回显输入字符;只有当用户名输入的用户名、密码字符串和程序内定的字符串相同时,才显示欢迎界面,并返回DOS。界面颜色自定(彩色或黑白)。

程序清单:

DATA SEGMENT USE16

MESG1 DB 0DH,0AH
      DB 'Please enter your username:$'
LL EQU $-MESG1
BUF DB 30
    DB ?
    DB 30 DUP(?)
BUF1 DB 6 DUP(?)
MIMA DB '666666'
WA DB 'Wrong Answer!$'
AC DB 'Welcome!$'
USER DB 'wonz'
WU DB 'Wrong Username$'
PASSWORD DB 'Please enter your password:$'
BUF2 DB 4 DUP(?)
COUNT DB 3

DATA ENDS

CODE SEGMENT USE16
     ASSUME CS:CODE,DS:DATA,ES:DATA  ;ES附加段也要,待显示字符放进ES
     
BEG:
     MOV AX,DATA
     MOV DS,AX
     MOV ES,AX  ;AX传给ES
     MOV AX,0003H
     INT 10H
     
  
    
AGAIN1:
	 ;MOV AX,0003H
	 ;INT 10H
	 ;MOV DH,12
	 ;MOV DL,(80-LL)/2
	 MOV AH,09H
     MOV DX,OFFSET MESG1 ;取偏移地址
     INT 21H
     MOV AX,1301H
     MOV BL,01001111B
     MOV CX,LL
     MOV DH,12
	 MOV DL,(80-LL)/2
     MOV BX,OFFSET BUF2
     MOV CX,4

;判断用户名是否正确 
LAST1:
     MOV AH,01H  ;输入4位用户名
     INT 21H     
     MOV [BX],AL ;低位传给BX
     INC BX      ;BX后移一位,一共移4次
     LOOP LAST1
     
     MOV DI,OFFSET BUF2
     MOV SI,OFFSET USER
     CLD
     MOV CX,4    ;比较4次
     REPE CMPSB  ;字符串比较,包括CX-1
     JZ AGAIN2   ;ZF=1,表示一样,跳到AGAIN2
     
     MOV AH,2
     MOV DL,0AH  ;换行
     INT 21H
     
     MOV AH,09H
     MOV DX,OFFSET WU
     INT 21H
     DEC COUNT
     JZ EXIT
     JMP AGAIN1  ;再输入一次用户名


AGAIN2:
	 MOV AH,2	
     MOV DL,0AH
     INT 21H
	 MOV AH,09H
	 MOV DX,OFFSET PASSWORD
	 INT 21H
     MOV BX,OFFSET BUF1
     MOV CX,6
     MOV COUNT,3


;判断密码是否错误   
LAST2:
     MOV AH,07H  ;不回显字符
     INT 21H     ;光标下移一行
     MOV [BX],AL ;低位传给BX
     MOV AH,02H  ;显示字符
     MOV DL,'*'
     INT 21H
     INC BX      ;BX后移一位,一共移6次
     LOOP LAST2
     
     MOV DI,OFFSET BUF1
     MOV SI,OFFSET MIMA
     CLD
     MOV CX,6    ;比较6次
     REPE CMPSB  ;字符串比较
     JZ RIGHT    ;ZF=1,表示一样,跳到RIGHT
     MOV AH,2
     MOV DL,0AH
     INT 21H
     
     MOV AH,09H
     MOV DX,OFFSET WA
     INT 21H
     DEC COUNT  ;计数,输错三次密码就退出
     JZ EXIT
     JMP AGAIN2

RIGHT:
	 MOV AH,2
     MOV DL,0AH
     INT 21H
     MOV AH,09H
     MOV DX,OFFSET AC
     INT 21H

EXIT:
     MOV AH,4CH
     INT 21H  ;返回 DOS
     
CODE ENDS
     END BEG

实验结果:

 

程序内设置的用户名为wonz,密码为666666。

测试时,输入用户名为wwww,显示用户名错误以及Please enter your username:

再输入wonz,显示Please enter your password:

输入密码,第一次输入123456,密码错误,再输入,111111,还是错误,第三次输入666666,密码正确,进入欢迎界面。

版权声明:本文为博主原创文章,未经博主允许不得转载。