8086单片机c语言,基于8086的电子密码锁,用汇编实现

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) |

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值