南邮汇编语言程序设计实验二————用户登录验证程序的设计

这篇博客介绍了使用汇编语言实现一个简单的安全登录系统的过程。实验中,程序要求用户输入用户名和密码,不回显密码字符,只有当输入与预设匹配时才会显示欢迎界面并返回DOS。实验还涉及到了密码的加密和解密以及欢迎界面的动画显示(选做部分)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

实验环境(实验设备)

实验要求

实验代码

相关函数

实验结果


实验环境(实验设备)

硬件:微型计算机

软件:Windows 操作系统、汇编语言开发工具MASM或TASM

实验要求

1. 程序执行后,给出操作提示,请用户键入用户名和密码。

2. 用户在键入密码时,程序不回显键入字符。

3. 只有当用户键入的用户和密码字符串和程序内定的字符串相同时,显示欢迎界面,并返回DOS。

4. 可对密码进行加密和解密;动画显示欢迎界面。(选做)

实验代码

.586
DATA SEGMENT USE16
     BUF DB 30
         DB ?
         DB 30 DUP(?)
     TIP1 DB 'Please enter your username:$'
     TIP2 DB 'Please enter your password:$'
	 TIP3 DB 'Welcome!$'
     EM DB 'incorrect username or password$'
DATA ENDS

TXT SEGMENT
     USER DB 'B19030623'
     PW DB '010721'
TXT ENDS

CODE SEGMENT USE16
     ASSUME CS:CODE,DS:DATA,ES:TXT
     
BEG:
     MOV AX,DATA
     MOV DS,AX 
	 MOV AX,TXT
     MOV ES,AX
	 
AGAIN1:	
MOV AH,09H
     MOV DX,OFFSET TIP1 ;取偏移地址
     INT 21H
     MOV AH,2
     MOV DL,0AH  ;换行
     INT 21H
	 
;判断用户名是否正确 
LAST1:
     MOV AH,0AH
	 MOV DX,OFFSET BUF ;获得输入
	 INT 21H
	 LEA DI,USER ;获取偏移位置
     LEA SI,BUF+2;获取偏移位置
	 MOV CX,9
	 CLD
     REPE CMPSB
	 JZ AGAIN2
	 MOV AH,2
     MOV DL,0AH  ;换行
     INT 21H
	 MOV AH,09H
     MOV DX,OFFSET EM ;输出报错
     INT 21H
	 JMP EXIT
AGAIN2:
	 MOV AH,2
     MOV DL,0AH  ;换行
     INT 21H
     MOV AH,09H
     MOV DX,OFFSET TIP2 ;取偏移地址
     INT 21H
	 MOV AH,2
     MOV DL,0AH  ;换行
     INT 21H
	 MOV CX,6
	 LEA BX,BUF+2
;判断密码是否正确 	 
LAST2:
     MOV AH,07H
	 INT 21H
	 MOV [BX],AL
	 INC BX
	 LOOP LAST2
     LEA DI,PW ;获取偏移位置
     LEA SI,BUF+2;获取偏移位置
	 MOV CX,6
	 CLD
     REPE CMPSB
	 JZ NEXT
 MOV AH,2
INT 21H
	 MOV AH,09H
     MOV DX,OFFSET EM ;输出报错
     INT 21H
	 JMP EXIT
NEXT:
     MOV AH,09H
     MOV DX,OFFSET TIP3 ;取偏移地址
     INT 21H
EXIT:
     MOV AH,4CH
     INT 21H  ;返回 DOS
     
CODE ENDS
     END BEG

相关函数

LEA :汇编中的lea指令的作用,简单清晰明了不废话!

REPE CMPSB :repe cmpsb指令解析

实验结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值