汇编学习笔记——用户登录验证系统

///汇编学习笔记——用户登录验证系统

汇编学习笔记——用户登录验证系统

正好最近在上微机课,稍微学了一点汇编,实验课做了个小程序,就正好来水一篇文章(

代码和逻辑还是比较简单的,也加了很多注释,应该可以看懂我就不细讲了(

.486
DATA SEGMENT USE16
    password DB 'B18020511$'
    password_len=$-password
    user     DB 'Sinon$'
    user_len=$-user
    buffer   DB 29
             DB ?
             DB 30 DUP(?)
    msg1     DB 'Please enter your user name:$'
    msg2     DB 'Please enter your password:$'
    msg3     DB 'Sinon,Welcome!'
             DB 0AH
             DB ' ________  ___  ________   ________  ________      '
             DB 0AH
             DB '|\   ____\|\  \|\   ___  \|\   __  \|\   ___  \    '
             DB 0AH
             DB '\ \  \___|\ \  \ \  \ \  \ \  \|\  \ \  \ \  \   '
             DB 0AH
             DB ' \ \_____  \ \  \ \  \ \  \ \  \\  \ \  \ \  \  '
             DB 0AH
             DB '  \|____|\  \ \  \ \  \ \  \ \  \\  \ \  \ \  \ '
             DB 0AH
             DB '    ____\_\  \ \__\ \__\ \__\ \_______\ \__\ \__\'
             DB 0AH
             DB '   |\_________\|__|\|__| \|__|\|_______|\|__| \|__|'
             DB 0AH
             DB '   \|_________|                                    '
             DB 0AH,'$'
    msg4     DB 'Invalid user name!'
             DB 0AH,'$'
    msg5     DB 'Password is incorrect!'
             DB 0AH,'$'
DATA ENDS

CODE SEGMENT USE16
    ASSUME CS:CODE,DS:DATA,ES:DATA
BEG:
    MOV AX,DATA
    MOV DS,AX
    MOV ES,AX
    ;提示输入用户名
NAME_LOOP:
    MOV AH,09H
    MOV DX,OFFSET msg1
    INT 21H
    ;输入用户名
    MOV AH,0AH
    MOV DX,OFFSET buffer
    INT 21H
    MOV AH,02H           ;换行
    MOV DL,0AH
    INT 21H
    MOV BL,buffer+1
    MOV BH,0
    MOV DI,OFFSET buffer+2
    MOV BYTE PTR [DI+BX],'$'
    ;比较是否相等
    MOV DI,OFFSET user
    MOV SI,OFFSET buffer+2
    MOV CX,user_len
    CLD
    REPE CMPSB
    JZ NAME_EXIT
    ;输入错误
    MOV AH,09H
    MOV DX,OFFSET msg4
    INT 21H
    JMP NAME_LOOP
NAME_EXIT:
    ;提示输入密码
    MOV AH,09H
    MOV DX,OFFSET msg2
    INT 21H
    ;输入密码
    MOV DI,OFFSET buffer+2
    MOV CX,20
PASS_IN:
    MOV AH,08H
    INT 21H
    CMP AL,0DH
    JE PASS_CMP
    MOV [DI],AL
    INC DI
    LOOP PASS_IN
PASS_CMP:
    MOV AH,02H           ;换行
    MOV DL,0AH
    INT 21H
    MOV [DI],BYTE PTR'$'
    ;比较是否相等
    MOV DI,OFFSET password
    MOV SI,OFFSET buffer+2
    MOV CX,password_len
    CLD
    REPE CMPSB
    JZ PASS_EXIT
    ;输入错误
    MOV AH,09H
    MOV DX,OFFSET msg5
    INT 21H
    JMP NAME_EXIT
PASS_EXIT:
    ;登录后欢迎信息
    MOV AH,09H
    MOV DX,OFFSET msg3
    INT 21H
    MOV AH,4CH
    INT 21H
CODE ENDS
END BEG
发布者 | 2020-12-06T00:07:21+08:00 12月 6th, 2020|学习笔记, 杂项|0条评论

关于作者

坚强大概——并不是指的的结果,而是迈向某个目标的过程吧。

发表评论

召唤伊斯特瓦尔