DATAS SEGMENT
;此处输入数据段代码
DOCDB0DH, 0AH, '======================================='
DB 0DH, 0AH, '|Simple password sysytem |'
DB 0DH, 0AH, '| Copy Right By DDDDD 2014-3-28 |'
DB0DH, 0AH, '=======================================$'
XINGDB0DH, 0AH, '*************************************$'
SETPASSDB0DH, 0AH, 'Please set your password:$'
RESPASSDB0DH, 0AH, 'Please set your password again:$'
SORRYDB0DH, 0AH, 'The two password you have set is not same!!!$'
INPUTDB0DH, 0AH, 'Please input your password:$'
SUCCESSDB 0DH, 0AH, 'WOW! Your card has 10000 dollars!$'
FAILDB0DH, 0AH, 'SORRY! your password is not right$'
TWODB 0DH, 0AH, 'YOU have only two chance now!$'
ONEDB 0DH, 0AH, 'YOU have only one chance now!$'
ZERODB 0DH, 0AH, 'YOU have no chance now!$'
PASSDB7;设置密码 存放位置
DB?
DB7 DUP(?)
PASS1DB7;再次设置密码 存放位置
DB?
DB7 DUP(?)
PASS2DB7;输入密码 存放位置
DB?
DB7 DUP(?)
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
EXTRA SEGMENT
PASS11DB9 DUP(?) ;PASS1 拷贝到PASS11
PASS22DB9 DUP(?) ;PASS2 拷贝到PASS22
EXTRAENDS
CODES SEGMENT
ASSUME CS:CODES, DS:DATAS, SS:STACKS, ES:EXTRA
START:
MOV AX,DATAS
MOV DS,AX
MOVAX,EXTRA
MOVES, AX
;此处输入代码段代码
MOVAH, 9;9号功能,屏幕输出字符串
LEADX, DOC;打印版权,将字符串首地址给DX
INT 21H
MOVAH, 9
LEADX, XING ;打印*****
INT 21H
MOVAH, 9H
LEADX, SETPASS ;打印Please set your password:
INT 21H
MOVAH, 0AH;0AH 等待输入字符串
LEADX, PASS;设置密码,密码存放在PASS
INT 21H
MOVAH, 9H
LEADX, RESPASS ;打印Please set your password again:
INT 21H
MOVAH, 0AH
LEADX, PASS1;再次设置密码,密码存放在PASS1
INT 21H
CALLCMPPASS01;比较两次设置密码是否相同
JESAME
MOVAH, 9H
LEADX, SORRY ;两次设置密码不同,打印The two password you have set is not same!!!
INT21H
JMPSTART
SAME:;密码设置正确
MOVAH, 9
LEADX, XING;打印******
INT 21H
MOVAH, 9H
LEADX,INPUT ;打印please input your password:
INT 21H
MOVAH, 0AH;输入密码
LEADX, PASS2 ;密码存放在PASS2
INT21H
CALLCMPPASS02 ;比较输入的密码和设置的密码
JERMB;相同,则会显示余额
MOVAH, 9H
LEADX, FAIL;不相同提示失败,SORRY! your password is not right
INT21H
MOVAH, 9H
LEADX, TWO;还有2次机会,YOU have only two chance now!
INT21H
MOVAH, 9H
LEADX, XING;打印*******************
INT 21H
MOVAH, 9H
LEADX,INPUT ;打印please input your password:
INT 21H
MOVAH, 0AH
LEADX, PASS2;第二次输入密码,密码存放在PASS2
INT 21H
CALLCMPPASS02;比较输入的密码和设置的密码
JERMB;相同,则会显示余额
MOVAH, 9H
LEADX, FAIL;不相同提示失败,SORRY! your password is not right
INT21H
MOVAH, 9H
LEADX, ONE;还有1次机会,YOU have only one chance now!
INT21H
MOVAH, 9
LEADX, XING;打印**********
INT 21H
MOVAH, 9H
LEADX,INPUT ;打印please input your password:
INT 21H
MOVAH, 0AH
LEADX, PASS2;第三次输入密码,密码存放在PASS2
INT 21H
CALLCMPPASS02;比较输入的密码和设置的密码
JERMB;相同,则会显示余额
MOVAH, 9H
LEADX, FAIL;不相同提示失败,SORRY! your password is not right
INT21H
MOVAH, 9H
LEADX, ZERO;没有机会了 you have no chance
INT21H
JMPOVER
RMB:
MOVAH, 9H
LEADX, XING;打印*****
INT 21H
MOV AH, 9H
LEADX,SUCCESS;显示余额 your card have 10000 dollars!
INT 21H
OVER:
MOV AH,4CH
INT 21H
CMPPASS01 PROC
LEASI,PASS1;源地址PASS1
LEADI, PASS11;目标地址PASS11
MOVCX, 9
CLD
REPMOVSB;将输入的密码移动到附加段PASS11,字节移动,重复次数cx
LEASI, PASS;源地址PASS,数据段
LEADI, PASS11;目标地址PASS11,附加段
MOVCX, 9
REPECMPSB;比较输入的密码和设置的密码,字节比较重复次数cx,不等于会自动退出比较
RET
CMPPASS01 ENDP
CMPPASS02 PROC
LEASI,PASS2
LEADI, PASS22
MOVCX, 9
CLD
LAST11:
MOVSB;采用loop循环进行字节移动,循环次数cx
LOOPLAST11
LEASI, PASS
LEADI, PASS22
MOVCX, 9
CLD
LAST21:
CMPSB
JNEOVER11;发现不等于就跳出,不比较了
LOOPLAST21
OVER11:
RET
CMPPASS02 ENDP
CODES ENDS
END START
阅读(15471) | 评论(3) | 转发(1) |