0


南京邮电大学汇编语言程序设计实验二(用户登录验证程序的设计)

文章目录

一、实验目的和要求

1.掌握循环程序的编写以及结束循环的方法。
2.掌握DOS、BIOS功能调用的使用方法。

二、实验内容

用户登录验证程序的实现
程序执行后,给出提示操作,请用户键入用户名和密码;用户在键入密码时,程序不回显键入字符;只有当用户键入的用户名,密码字符串和程序内定的字符串相同时,显示欢迎界面并返回DOS;否则给出提示信息,用户名或密码错误,再次输入。界面颜色自定(彩色或黑白)

三、实验环境(实验设备)

XP /WIN7+MASM/TASM/轻松汇编/未来汇编

四、实验代码

.586
DATA          SEGMENT     USE16
    MESG1         DB         'INPUT YOUR USERNAME: $';提示字符
    MESG2          DB         'INPUT YOUR PASSWORD: $' 
    ERROR          DB     '-----USERNAME OR PASSWORD ERROR!----$'
    WELCOME     DB     '---------------WELCOME!-------------$'        
    
    
    _USERNAME      DB         'root'
    _PASSWORD      DB         'root'
    _ULEN          EQU     $-_USERNAME         ; 用户名长度
    _PLEN          EQU     $-_PASSWORD           ; 密码长度
    
    USERNAME      DB        15; 输入的用户名
    PASSWORD      DB         15DUP(?); 输入的密码
    PLEN          DB         0; 输入密码的长度
    
    
DATA          ENDS

CODE          SEGMENT     USE16
          ASSUME     CS: CODE, DS: DATA
BEG:      MOV     AX,     DATA
          MOV     DS,     AX
NEXT0:  MOV     AH,9;09H功能号,显示DS:DL内字符串
          MOV     DX,     OFFSET MESG1
          INT     21H
          MOV     AH,0AH               ;键盘输入字符串并显示,存在U缓冲区
        MOV     DX,     OFFSET USERNAME          ;用户输入字符串起始偏移位置放入DX缓冲区
          INT     21H
          MOV     AH,2
          MOV     DL,0AH                ;换行字符
          INT     21H
          MOV     AH,9;显示提示字符串
          MOV     DX,     OFFSET MESG2
          INT     21H
          MOV     CX,     _PLEN
          MOV     SI,     OFFSET PASSWORD      ;把输入密码起始偏移地址放入SI
NEXT1:  MOV     AH,07H             ;无回显从键盘读入一个字符
          INT     21H
          CMP     AL,0DH              ;判断输入是否结束
          JE     IND
          MOV     [SI],     AL               ;将输入密码字符放入数据区:PWD
          MOV     AH,2;每输入一位密码显示一个‘*’
          MOV     DL,'*'
          INT     21H
          INC     PLEN
          INC     SI
          JMP     NEXT1
IND:      MOV     AH,2;输出换行
          MOV     DL,0AH
          INT     21H
         MOV     BX,     OFFSET USERNAME+1;[BX]=实际输入字符数
          MOV     AL,[BX]
          CMP     AL,     _ULEN              ;比较用户名长度    
          MOV   BX,     OFFSET _USERNAME
          MOV     SI,     OFFSET _USERNAME+2
          MOV     CX,     _ULEN              ;设置循环次数
NEXT2:  MOV     AL,[BX]
          CMP     [SI],     AL              ;循环比较用户名是否正确
          INC       SI
          INC     BX
          LOOP     NEXT2
          MOV     BX,     OFFSET _PASSWORD
          MOV     SI,     OFFSET PASSWORD
          MOV     CL,     PLEN
          MOV     CH,0
          CMP     CX,     _PLEN              ;比较密码长度
          JNZ     ERR
          MOV     CX,     _PLEN
NEXT3:  MOV     AL,[BX]
          CMP     [SI],     AL              ;循环比较密码字符是否正确
          JNZ     ERR
          INC     SI
          INC     BX
          LOOP     NEXT3
          JMP     WEL
ERR:      MOV     AH,9
          MOV     DX,     OFFSET ERROR     ;输出用户名或密码错误提示
          INT     21H
          MOV     AH,2
          MOV     DL,0AH
        INT     21H
          JMP     NEXT0
WEL:      MOV     AH,9;输出登录成功的提示
          MOV     DX,     OFFSET WELCOME
          INT     21H
          JMP     EXIT
EXIT:      MOV     AH,4CH
          INT     21H
CODE      ENDS
          END BEG

五、实验过程描述与结果分析

1、程序执行后,给出提示操作,请用户键入用户名和密码。
2、用户在键入密码时,程序不回显键入字符;只有当用户键入的用户名,密码字符串和程序内定的字符串相同时,显示欢迎界面并返回DOS;
3、否则给出提示信息,用户名或密码错误,再次输入。

六、实验小结(包括问题和解决方法、心得体会、意见与建议等)

1、注意子功能调用方法的使用
2、变量的命名格式要统一简洁
3、程序计数器CX的使用

标签: java linux 开发语言

本文转载自: https://blog.csdn.net/qq_35500719/article/details/127871223
版权归原作者 亦是远方 所有, 如有侵权,请联系我们删除。

“南京邮电大学汇编语言程序设计实验二(用户登录验证程序的设计)”的评论:

还没有评论