data segment PASW DB Xha123 ; 原始密码 L1 DW $-PASW ; 原始密码长度放在L1变量单元 MAT DW 9 PRINT_ DB To input password end with ENTER$ ;输出缓冲区存放将要输出到显示器的字符串 BUFFER_ DB 10 0 10 DUP0
以下是代码实现:
data segment
PASW DB "Xha123" ; 原始密码
L1 DW $-PASW ; 原始密码长度放在L1变量单元
MAT DW 9
PRINT_ DB 'To input password, end with ENTER:$' ;输出缓冲区,存放将要输出到显示器的字符串
BUFFER_ DB 10, 0 ,10 DUP(0) ;输入缓冲区,存放从键盘输入的字符串,输入带回显
pkey db "press any key...$"
ends
code segment assume cs:code, ds:data
start: mov ax, data mov ds, ax
; 输出提示信息 mov ah, 09h lea dx, PRINT_ int 21h
; 从键盘输入密码 mov ah, 0Ah lea dx, BUFFER_ int 21h
; 将用户输入与原始密码比较 mov si, OFFSET BUFFER_+2 ; 用户输入的字符串从BUFFER_+2开始 mov di, OFFSET PASW mov cx, L1 cmp cx, 0 ; 如果原始密码长度为0,则直接清零MAT并结束程序 je end_prog check: mov al, [si] cmp al, [di] jne not_match inc si inc di loop check mov MAT, FFFFh ; 匹配成功,将MAT赋值为FFFFh jmp end_prog not_match: xor ax, ax mov MAT, ax ; 匹配失败,将MAT清零 end_prog:
; 输出结果并等待用户按任意键结束程序 mov ah, 09h lea dx, pkey int 21h mov ah, 0 int 16h
mov ax, 4c00h int 21h end start
原文地址: https://www.cveoy.top/t/topic/bxRb 著作权归作者所有。请勿转载和采集!