微机原理-使用DOS调用设计密码锁程序

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

本项目使用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调用在汇编语言中具有非常大的作用,以后再为大家讲解。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WOWOWOisisns

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值