文章目录

  • 一、实验目的和要求
  • 二、实验内容
  • 三、实验环境(实验设备)
  • 四、实验代码
  • 五、实验过程描述与结果分析
  • 六、实验小结(包括问题和解决方法、心得体会、意见与建议等)

一、实验目的和要求

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

二、实验内容

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

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

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

四、实验代码

.586DATASEGMENT USE16MESG1 DB 'INPUT YOUR USERNAME: $';提示字符MESG2DB 'INPUT YOUR PASSWORD: $' ERRORDB '-----USERNAME OR PASSWORD ERROR!----$'WELCOME DB '---------------WELCOME!-------------$'_USERNAMEDB 'root'_PASSWORDDB 'root'_ULENEQU $-_USERNAME ; 用户名长度_PLENEQU $-_PASSWORD ; 密码长度USERNAMEDB15 ; 输入的用户名PASSWORDDB 15 DUP(?); 输入的密码PLENDB 0; 输入密码的长度DATAENDSCODESEGMENT USE16ASSUME CS: CODE, DS: DATABEG:MOV AX, DATAMOV DS, AXNEXT0:MOV AH, 9;09H功能号,显示DS:DL内字符串MOV DX, OFFSET MESG1INT 21HMOV AH, 0AH ;键盘输入字符串并显示,存在U缓冲区MOV DX, OFFSET USERNAME;用户输入字符串起始偏移位置放入DX缓冲区INT 21HMOV AH, 2MOV DL, 0AH;换行字符INT 21HMOV AH, 9 ;显示提示字符串MOV DX, OFFSET MESG2INT 21HMOV CX, _PLENMOV SI, OFFSET PASSWORD;把输入密码起始偏移地址放入SINEXT1:MOV AH, 07H ;无回显从键盘读入一个字符INT 21HCMP AL, 0DH;判断输入是否结束JE INDMOV [SI], AL ;将输入密码字符放入数据区:PWDMOV AH, 2;每输入一位密码显示一个‘*’MOV DL, '*'INT 21HINC PLENINC SIJMP NEXT1IND:MOV AH, 2 ;输出换行MOV DL, 0AHINT 21H MOV BX, OFFSET USERNAME+1;[BX]=实际输入字符数MOV AL, [BX]CMP AL, _ULEN;比较用户名长度MOV BX, OFFSET _USERNAMEMOV SI, OFFSET _USERNAME+2MOV CX, _ULEN;设置循环次数NEXT2:MOV AL, [BX]CMP [SI], AL;循环比较用户名是否正确INC SIINC BXLOOP NEXT2MOV BX, OFFSET _PASSWORDMOV SI, OFFSET PASSWORDMOV CL, PLENMOV CH, 0CMP CX, _PLEN;比较密码长度JNZ ERRMOV CX, _PLENNEXT3:MOV AL, [BX]CMP [SI], AL;循环比较密码字符是否正确JNZ ERRINC SIINC BXLOOP NEXT3JMP WELERR:MOV AH, 9MOV DX, OFFSET ERROR ;输出用户名或密码错误提示INT 21HMOV AH, 2MOV DL, 0AHINT 21HJMP NEXT0WEL:MOV AH, 9 ;输出登录成功的提示MOV DX, OFFSET WELCOMEINT 21HJMP EXITEXIT:MOV AH, 4CHINT 21HCODEENDSEND BEG

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

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

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

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