实 验 报 告
课程名称 | 汇编语言程序设计 | ||
实验名称 | 用户登录验证程序的实现 | ||
一、实验目的和要求 实验目的:掌握字符串的键盘输入(有回显和无回显两种),以及字符串的比较。 实验要求:程序执行后,给出操作提示,请用户键入用户名和密码;用户在键入密码时,程序不回显键入字符;只有当用户键入的用户名、密码字符串和程序内定的字符串相同时,显示欢迎界面,并返回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 3 ;可尝试次数 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小时内删除。
发表评论