汇编语言密码设置模拟 编写程序可以进行密码的设置(第一次)和修改(已设置密码)。要求输入的密码用*显示。
时间: 2023-07-12 15:13:28 浏览: 111
以下是汇编语言的一种实现方式,适用于x86架构的计算机:
```
; 密码设置模拟程序
.MODEL SMALL
.STACK 100H
.DATA
pwd DB 6 DUP (?) ; 存储密码的数组,假设密码为6位
msg1 DB '请输入密码:$'
msg2 DB '密码设置成功!$'
msg3 DB '请输入原密码:$'
msg4 DB '请输入新密码:$'
msg5 DB '密码修改成功!$'
.CODE
MAIN PROC
MOV AX, @DATA
MOV DS, AX ; 初始化数据段寄存器
; 设置密码
MOV AH, 09H ; 显示提示信息
LEA DX, msg1
INT 21H
; 输入密码,用*代替
MOV CX, 6 ; 假设密码为6位
LEA SI, pwd
MOV AH, 08H ; 屏幕输入
READ:
INT 21H
CMP AL, 0DH ; 检查是否输入回车
JE SETPWD
MOV BL, AL ; 保存输入的字符
MOV AL, '*' ; 显示*
INT 10H
MOV [SI], BL ; 保存密码
INC SI
LOOP READ
SETPWD:
LEA DX, msg2
INT 21H ; 显示密码设置成功信息
JMP END
; 修改密码
CHGPWD:
MOV AH, 09H ; 显示提示信息
LEA DX, msg3
INT 21H
; 输入原密码,用*代替
MOV CX, 6 ; 假设密码为6位
LEA SI, pwd
MOV AH, 08H ; 屏幕输入
CHECK:
INT 21H
CMP AL, 0DH ; 检查是否输入回车
JE CHKPWD
MOV BL, AL ; 保存输入的字符
MOV AL, '*' ; 显示*
INT 10H
CMP [SI], BL ; 检查输入的字符是否与密码匹配
JNE CHGPWD ; 不匹配则重新输入
INC SI
LOOP CHECK
CHKPWD:
MOV AH, 09H ; 显示提示信息
LEA DX, msg4
INT 21H
; 输入新密码,用*代替
MOV CX, 6 ; 假设密码为6位
LEA SI, pwd
MOV AH, 08H ; 屏幕输入
CHG:
INT 21H
CMP AL, 0DH ; 检查是否输入回车
JE SETNEWPWD
MOV BL, AL ; 保存输入的字符
MOV AL, '*' ; 显示*
INT 10H
MOV [SI], BL ; 保存新密码
INC SI
LOOP CHG
SETNEWPWD:
LEA DX, msg5
INT 21H ; 显示密码修改成功信息
END:
MOV AH, 4CH
INT 21H ; 程序结束
MAIN ENDP
END MAIN
```
以上程序实现了密码设置和修改功能,可以根据需要进行适当的修改。需要注意的是,由于涉及到密码,程序中没有加入任何密码保护机制,仅供学习参考使用。