提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
本项目使用dos调用来设计密码锁程序,由于是编程小白,程序可能有误仅供参考,欢迎大家指正和批评。
一、DOS调用是什么?
1.DOS功能调用
调用号 | 功能 | 入口参数 |
09H | 显示字符串 | DS:DX=缓冲区首址 |
0AH | 输入字符串 | DS:DX=缓冲区首址 |
注释:表格不全面(如果想进一步了解可参考https://blog.csdn.net/icurious/article/details/51628343)
2.具体使用格式
CRLF DB 0DH,0AH,'$'
LEA DX,CRLF
MOV AH,09H;输出换行
INT 21H
BUFIN DB 10H
DB 0
BUFIN1 DB 10H DUP(0)
LEA DX,BUFIN
MOV AH,0AH;输入缓冲区里的密码
INT 21H
二、使用步骤
1.代码
代码如下(示例):
DATA SEGMENT
STR1 DB 'PLEASE INPUT PASSWORD:$'
STR2 DB 'THE PASSWORD IS TURE!$'
STR3 DB 'THE PASSWORD IS WRONG!$'
CRLF DB 0DH,0AH,'$'
PSD DB '123456'
BUFIN DB 10H
DB 0
BUFIN1 DB 10H DUP(0)
ENDS DATA
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV ES,AX
LEA AX,STR1
MOV AH,09H
INT 21H;输出字符串STR1‘PLEASE INPUT PASSWORD’
LEA DX,BUFIN
MOV AH,0AH
INT 21H;从键盘上输入密码(缓冲区中的密码)
LEA DX,CRLF
MOV AH,09H
INT 21H;输出换行
MOV AL,BUFIN+1;将缓冲区中字符的个数给AL
CBW;扩展AL-AX
CMP AL,6;可优化
JNE NO_SAME;若输入字符个数与制定的密码个数不等直接跳转到NO_SAME
CLD
LEA SI,PSD
LEA DI,BUFIN1
MOV CX,6;可优化
AGAIN:
CMPSB
JNE NO_SAME;比较PSD和键盘输入密码不相等跳入NO_SAME
LOOP AGAIN;循环
ASME:
LEA DX,STR2
MOV AH,09H
INT 21H;输出字符串STR1‘THE PASSWORD IS TURE!’
LEA DX,CRLF
MOV AH,09H
INT 21H;输出换行
JMP DONE
NO_SAME:
LEA DX,STR3
MOV AH,09H
INT 21H;输出字符串STR3‘THE PASSWORD IS WRONG!’
LEA DX,CRLF
MOV AH,09H
INT 21H;输出换行
JMP DONE
DONE:
MOV AH,4CH
INT 21H
CODE ENDS
END START
2.调试运行
具体情况如下:
(1)
(2)输入密码有四种情况
第一,输入正确的密码
第二,输入错误密码(长度相同)
第三,输入长度不同密码(长度短)
第四,输入长度不同的密码(长度长)
总结
以上就是今天要讲的内容,本文仅仅简单介绍了使用dos调用设计简易密码锁,而dos调用在汇编语言中具有非常大的作用,以后再为大家讲解。