经典汇编语言教程:例8.4 编写一个输入密码的程序

例8.4 编写一个输入密码的程序

例8.4 编写一个输入密码的程序,该程序的具体要求如下:

1、每输入一个字符,显示字符"#"表示之;
2、密码最多只有10个字符,多余的按键被丢弃;
3、若输入的字符串为"HELLO",则以蓝色显示"Welcome…",否则,以闪烁、亮红色在显示"Invalid Password"。

解:
.MODEL SMALL
.DATA
CR EQU 0DH
MSG1 DB "Welcome..."
MSG2 DB "Invalid Password"
PSW1 DB "HELLO"
BUFF DB 10 DUP(?)
.CODE
.STARTUP
MOVAX, DS
MOVES, AX
XORBX, BX
again:
MOVAH, 0H
INT16H;从键盘接受字符输入
CMPAL, CR
JZnext;若按“回车“键,则结束密码输入
CMPBX, 10
JZagain;若已接受了10个字符,则丢弃随后的字符
.IF  AL>='a' && AL<='z'
SUB AL, 20H
.ENDIF
MOVBUFF[BX], AL
INCBX;保存当前输入,并移动有关指针
MOVDL, '#'
MOVAH, 2
INT21H;在屏幕上显示字符”#”
JMPagain
next:
CALLClear;清屏幕,见例8.2中的过程定义
CMPBX, 5
JNZerror;若输入的字符串长度不为5,则密码错误
LEASI, PSW1
LEADI, BUFF
MOVCX, BX
CLD
REPECMPSB;比较字符串PSW1和BUFF
.IF  ZERO?;若字符串的相应字符相同
MOV BP, OFFSET MSG1;显示字符串首地址
MOV BL, 09H;显示字符颜色:蓝色
MOV CX, 0AH;显示字符串长度:10
.ELSE
MOV BP, OFFSET MSG2;显示字符串首地址
MOV BL, 8CH;显示字符颜色:闪烁、亮红色
MOV CX, 10H;显示字符串长度:16
.ENDIF
MOVAL, 0
MOVBH, 0
MOVDH, 5
MOVDL, 20;在位置(5,20)的位置开始显示字符串
MOVAH, 13H
INT10H;使用中断10H之功能13H来显示字符串
.EXIT 0
END

经典汇编语言教程·相关目录

第1章 汇编语言的由来,数据类型第2章 CPU资源和存储器
第3章 操作数的寻址方式第4章 标识符和表达式
第5章 微机CPU的指令系统第6章 程序的基本结构
第7章 子程序和库第8章 输入输出和中断
第9章 宏第10章 应用程序设计
第11章 数值运算协处理器第12章 汇编语言和C语言
汇编语言重要附录Windows API函数大全
版权所有 © 中山市飞娥软件工作室 证书:粤ICP备09170368号