欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

南邮微机接口汇编实验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
相关标签: 南邮学习 dosbox