南邮微机接口汇编实验2
程序员文章站
2022-06-20 20:25:30
...
#南邮汇编实验
##用户登陆验证程序的设计
第二次实验,名称“用户登陆验证程序的设计”,实验要求:
1)运行程序后,界面首先出现自己的学号,例如“B18060701”
2)在学号下方输入登录密码,密码长度不超过30个字符。密码内容不能显示在屏幕上,要求用字符*替代。
3)验证输入密码与事先设定的密码是否相同,如果密码正确,给出提示“OK”,程序结束;如果密码不正确,重新输出学号,继续输入密码。
4)选作内容:如果连续5次密码输入都不正确,界面提示“LOCKED”,退出程序。
提示: 1)为了实现在学号下方输入登录密码,输出学号时后面要跟着回车换行符
2)密码输入不能用DOS的0A号功能调用,虽然该功能允许键盘输入字符串,但是会明码显示在界面上,可以使用DOS的8号功能调用
3)程序包括数据段和代码段。其中数据段至少需要定义4个字符串,一个是自己的学号,一个是事先设定的密码,一个是键盘输入的密码,一个是“OK”。(实现选作功能时,可以再增加2个变量)
4)记录键盘输入的密码串时,需要用到循环操作。密码输入如果不满30就结束,可以自行设定结束标记 5)
判断输入密码串与事先设定的密码串是否相等,请使用LOOP实现循环判断。虽然使用大家上课没有学过的串操作指令也可以实现两个字符串的比较,但是不利于大家对课堂已学内容的掌握和巩固,所以请不用使用串操作指令。
;.486
DATA SEGMENT
MESG1 DB 'B18060522$'
MESG2 DB 'INPUT PASSWORD:$'
PWD DB 30 DUP(?)
PWDLENGTH DB 0
U DB 'B18060522'
ULENGTH EQU $-U
P DB '417520'
MLENGTH EQU $-P
WELCOME DB 'OK$'
ERROR DB 'LOCKD$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
BEG: MOV AX,DATA
MOV DS,AX
MOV DI,5
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 ;显示input pwd
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