实 验 报 告
课程名称
汇编语言程序设计
实验名称
用户登录验证程序的实现
一、实验目的和要求
实验目的:掌握字符串的键盘输入(有回显和无回显两种),以及字符串的比较。
实验要求:程序执行后,给出操作提示,请用户键入用户名和密码;用户在键入密码时,程序不回显键入字符;只有当用户键入的用户名、密码字符串和程序内定的字符串相同时,显示欢迎界面,并返回DOS。界面颜自定(彩或黑白)。
二、实验环境(实验设备)
硬件:微型计算机
软件:Windows 操作系统、汇编语言开发工具MASM或TASM
三、实验原理及内容
1.源代码和注释
DATA SEGMENT USE16
MESG1 DB 0DH,0AH
      DB 'Enter your username:$'
字符串长度工具
PASSWORD DB 'Enter your password:$'
BUF DB 30 ;存输入的用户名
    DB ?
    DB 30 DUP(?)
   
BUF1 DB 6 DUP(?);存输入的密码
USER DB 'renyuanzhe'
LL EQU $-USER ;设置的用户名的长度
MIMA DB '123456'
LLL EQU $-MIMA;设置的密码的长度
WRONG_A DB 'Wrong Password!$'
SUCCESS DB 'SUCCESS!$'
WRONG_U DB 'Wrong Username$'
COUNT DB;可尝试次数
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
   
 
   
U_MODULE:  ;用户名模块
   
    MOV AH,09H ;DOS显示字符串
    MOV DX,OFFSET MESG1 ;取偏移地址
    INT 21H
    MOV    AH,0AH  ;等待从键盘输入的字符串(在屏幕上显示),并保存在缓冲区
    MOV    DX,OFFSET BUF;DX=缓冲区首地址
    INT    21H
    ;判断用户名是否正确
    MOV DI,OFFSET BUF+2
    MOV SI,OFFSET USER
    CLD
   
    MOV CX,LL;比较字符串的长度
   
    REPE CMPSB  ;字符串比较,包括CX-1
    JZ P_MODULE  ;ZF=1,表示一样,跳到P_MODULE
   
    MOV AH,2    ;换行
    MOV DL,0AH 
    INT 21H
   
    MOV AH,09H  ;DOS显示提示字符串
    MOV DX,OFFSET WRONG_U ;显示错误信息
    INT 21H
   
    DEC COUNT ;可尝试次数-1
    JZ EXIT  ;如果次数用完则退出
    JMP U_MODULE 
P_MODULE:
    MOV AH,2    ;换行
    MOV DL,0AH
    INT 21H
   
    MOV AH,09H  ;DOS显示提示字符串
    MOV DX,OFFSET PASSWORD
    INT 21H
   
    MOV BX,OFFSET BUF1
    MOV CX,LLL
    MOV COUNT,3
;一个个输入字符(不显示) 
LAST:
    MOV AH,07H 
    INT 21H    ;光标下移一行
    MOV [BX],AL ;输入的ascill码传给BX
   
    MOV AH,02H  ;显示加密字符
    MOV DL,'*'
    INT 21H
   
    INC BX      ;BX后移一位,
    LOOP LAST
   
   
   
    MOV DI,OFFSET BUF1
    MOV SI,OFFSET MIMA
    CLD
    MOV CX,LLL    ;比较LLL次
    REPE CMPSB  ;字符串比较
    JZ RIGHT    ;ZF=1,表示一样,跳到RIGHT
   
    MOV AH,2  ;换行
    MOV DL,0AH
    INT 21H
   
    MOV AH,09H  ;打印错误信息
    MOV DX,OFFSET WRONG_A
    INT 21H
   
    DEC COUNT  ;计数,输错三次密码就退出
    JZ EXIT
    JMP P_MODULE
RIGHT:
    MOV AH,2  ;换行
    MOV DL,0AH
    INT 21H
   
    MOV AH,09H ;打印成功字符串
    MOV DX,OFFSET SUCCESS
    INT 21H
EXIT:
    MOV AH,4CH
    INT 21H  ;返回 DOS
   
CODE ENDS
    END BEG
实 验 报 告

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。