汇编 电子密码锁 程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
最终程序代码:
DATA SEGMENT
KEY DB'ABCDEF'
TRYKEY DB7
DB?
DB7DUP(?)
OLDKEY DB7
DB?
DB7DUP(?)
NEWKEY1DB7
DB?
DB7DUP(?)
NEWKEY2DB7
DB?
DB7DUP(?)
FLAG DB1
DB?
ESUM DB0
STR1DB'PLEASEINPUTKEYCODE:',0DH,0AH DB'$'
STR3DB'Youareright!',0DH,0AH
DB'$'
STR4DB'Keycodeerror!',0DH,0AH,24H
STR5DB'PleaseInputoldkeycode:',0DH,0AH
DB'$'
STR6DB'PleaseInputnewkeycode:',0DH,0AH
DB'$'
STR7DB'PleaseReInputnewkeycode:',0DH,0AH
DB'$'
STR8DB'Keycodemodificationsucceed!',0DH,0AH
DB'$'
STR9DB'Thetwokeycodesaredifferent!',0DH,0AH
DB'$'
STRa DB'ESC:ChoicetoEXIT;ENTER:Choicetogoon;',0DH,0AH
DB'$'
STRc DB'ESC:ChoicetoEXIT;ENTER:ChoicetoModifykeycode;',0DH,0AH DB'$'
STRb DB'ESC:ChoicetoEXIT;BACKSPACE:RETURN;ENTER:Choicetogoon',0 DH,0AH
DB'$'
STRd DB'ESC:ChoicetoEXIT;BACKSPACE:RETURN;',0DH,0AH
DB'$'
DATA ENDS
STACK SEGMENT
DW100DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK START:
MOV AX,DATA
MOV DS,AX
MOV ES,AX
INPUT:
MOV AH,9;屏幕显示,提示输入密码LEA DX,STR1
INT21H
MOV AH,0AH;输入密码
LEA DX,OFFSET TRYKEY
INT21H
MOV AH,9;屏幕显示,菜单选项
LEA DX,STRa
INT21H
MOV AH,1;密码正确后下一步选择
INT21H
CMP AL,1BH;选择ESC则退出
JZEXIT
CMP AL,0DH;选择ENTER验证密码JZCOMPARE
COMPARE:;输入密码与实际密码比较验证
MOV AX,DS
MOV ES,AX
MOV SI,OFFSET KEY
MOV DI,OFFSET TRYKEY
INC DI
INC DI
MOV CX,6
REPECMPSB
JZRIGHT
JNZE1
E1:MOV DI,OFFSET ESUM
INC BYTEPTR[DI]
MOV AH,9;屏幕显示,输入密码错误
LEA DX,STR4
INT21H
MOV SI,OFFSET FLAG;密码错误时的音效选择INC SI
MOV BYTEPTR[SI],'F'
CMP BYTEPTR[DI],3;判断输入是否超过3次JBSHENGYIN;没超过3次连错就调用音效提示错误JMPEXIT;输入密码超过3次自动结束程序RIGHT:
MOV AH,9;屏幕显示,输入密码正确
LEA DX,STR3
INT21H
MOV AH,9;屏幕显示,菜单选项LEA DX,STRc
INT21H
MOV AH,1;密码正确后下一步选择INT21H
CMP AL,1BH;选择ESC则退出JZEXIT
CMP AL,0DH;选择ENTER则修改密码JZMODIFY
MODIFY:
A1:MOV AH,9;屏幕显示,输入原密码LEA DX,STR5
INT21H
MOV AH,0AH;原密码输入
LEA DX,OFFSET OLDKEY
INT21H
MOV AX,DS
MOV ES,AX
MOV SI,OFFSET KEY
MOV DI,OFFSET OLDKEY
INC DI
MOV CX,6
REPECMPSB
JZAb
MOV AH,9
LEA DX,STR4
INT21H
JMPC1
C1:MOV AH,9;屏幕显示,菜单选项
LEA DX,STRd
INT21H
MOV AH,1;密码正确后下一步选择
INT21H
CMP AL,1BH;选择ESC则退出
JZEXIT
CMP AL,08H;选择BACKSPACE则返回上一级继续输入原密码JZA1
Ab:MOV AH,9;屏幕显示,菜单选项
LEA DX,STRb
INT21H
MOV AH,1;密码正确后下一步选择
INT21H
CMP AL,1BH;选择ESC则退出