密码锁 汇编 三组可改密码
时间: 2023-06-26 19:04:09 浏览: 107
以下是一个简单的密码锁程序,可以通过修改其中的三组密码来实现可改密码的功能。
```asm
.MODEL SMALL
.STACK 100H
.DATA
PWD1 DB '1234$'
PWD2 DB '5678$'
PWD3 DB '9012$'
MSG1 DB 'Enter Password: $'
MSG2 DB 'Access Granted! $'
MSG3 DB 'Access Denied! $'
.CODE
MAIN PROC
MOV AX, @DATA
MOV DS, AX ;初始化数据段寄存器
MOV DX, OFFSET MSG1 ;输出提示信息
MOV AH, 9
INT 21H
MOV SI, 0 ;初始化密码输入指针
MOV CX, 4 ;设定密码长度为4位
MOV DI, OFFSET PWD1 ;设定初始密码为PWD1
READ: ;读取键盘输入
MOV AH, 01H
INT 21H
CMP AL, 0DH ;如果输入回车键,则跳出循环
JE CHECK
MOV BL, AL ;将输入存入BL
MOV AH, 0EH ;在屏幕上输出*
INT 10H
MOV [DI+SI], BL ;将输入存入密码缓冲区
INC SI ;指针加1
CMP SI, CX ;如果已输入完4位密码,则跳出循环
JNE READ
CHECK: ;判断密码是否正确
MOV DI, OFFSET PWD1 ;先判断PWD1
MOV CX, 4
MOV SI, 0
CMPSTR: ;逐位比较
MOV AL, [DI+SI]
MOV BL, [PWD1+SI]
CMP AL, BL
JNE NEXT
INC SI
CMP SI, CX
JE GRANTED
NEXT: ;尝试下一个密码
MOV DI, OFFSET PWD2
MOV CX, 4
MOV SI, 0
CMPSTR2:
MOV AL, [DI+SI]
MOV BL, [PWD2+SI]
CMP AL, BL
JNE NEXT2
INC SI
CMP SI, CX
JE GRANTED
NEXT2: ;尝试第三个密码
MOV DI, OFFSET PWD3
MOV CX, 4
MOV SI, 0
CMPSTR3:
MOV AL, [DI+SI]
MOV BL, [PWD3+SI]
CMP AL, BL
JNE DENIED
INC SI
CMP SI, CX
JE GRANTED
DENIED: ;密码不正确,输出提示信息
MOV DX, OFFSET MSG3
MOV AH, 9
INT 21H
JMP READ
GRANTED: ;密码正确,输出提示信息
MOV DX, OFFSET MSG2
MOV AH, 9
INT 21H
MOV AH, 4CH ;退出程序
INT 21H
MAIN ENDP
END MAIN
```
在上面的代码中,可以看到三组不同的密码分别存储在 PWD1、PWD2 和 PWD3 中,可以根据需要修改这些密码。同时,可以通过修改 MSG1、MSG2 和 MSG3 来自定义程序的输出信息。
阅读全文