实验原理及内容:
程序执行后,给出操作提示,请用户输入用户名和密码;用户在输入密码时,程序不回显输入字符,只有当用户输入的用户名、密码字符串和程序内定的字符串相同时。才显示欢迎界面,并返回DOS。界面颜色自定(彩色或黑白)。
程序代码:
DATA SEGMENT
MESG1 DB 'B20030105 $'
MESG2 DB 'password:$'
PWD DB 30 DUP(?)
PWDLENGTH DB 0
U DB 'B21xxxxxx'
ULENGTH EQU $-U
P DB '11111'
MLENGTH EQU $-P
WELCOME DB 'true$'
ERROR DB 'fail$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
BEG: MOV AX,DATA
MOV DS,AX
MOV DI,3
NEXT0:
CMP DI,0
JZ ERR
MOV PWDLENGTH,0
MOV AH,09H
MOV DX,OFFSET MESG1 ;显示学号
INT 21H
MOV AH,02H
MOV DL,0AH ;换行
INT 21H
MOV AH,09H
MOV DX,OFFSET MESG2 ;显示密码
INT 21H
MOV CX,MLENGTH
MOV SI,OFFSET PWD
NEXT1:
MOV AH,07H ;无回显从键盘读入一个字符
INT 21H
CMP AL,0DH
JE NEXT2 ;等于回车符号则跳转IND
MOV [SI],AL
MOV AH,02H ;显示字符
MOV DX,'*'
INT 21H
INC PWDLENGTH ;输入的密码长度+1
INC SI ;密码源变址寄存器的地址+1
JMP NEXT1
NEXT2:
MOV AH,02H
MOV DL,0AH ;换行
INT 21H
DEC DI
MOV BX,OFFSET P
MOV SI,OFFSET PWD
MOV CL,PWDLENGTH
MOV CH,0
CMP CX,MLENGTH ;比较密码长度
JNZ NEXT0
MOV CX,MLENGTH
NEXT3:
MOV AL,[BX]
CMP [SI],AL
JNZ NEXT0
INC SI
INC BX
LOOP NEXT3
JMP WEL
WEL: MOV AH,09H
MOV DX,OFFSET WELCOME
INT 21H
JMP EXIT
ERR: MOV AH,09H
MOV DX,OFFSET ERROR
INT 21H
JMP EXIT
EXIT: MOV AH,4CH
INT 21H
CODE ENDS
END BEG