📄 pass.asm
字号:
data segment
output0 db 'Please input your password:$'
output1 db 0dh,0ah,'Please input it twice:','$'
output2 db 0dh,0ah,'please remeber it!!!',0dh,0ah,'$'
output3 db 'ok!',0dh,0ah,'$'
output4 db 'wrong, try again...',0dh,0ah,'$'
output5 db 'Now program is starting...',0dh,0ah,'$'
maxlen db 64h
actlen dw ?
password db 64 dup(0)
input1 db 64 dup(0)
cref1 db 0dh,0ah,'$'
input2 db 64 dup(0)
cref2 db 0dh,0ah,'$'
data ends
stack segment para stack 'stack'
db 64 dup(0)
stack ends
code segment
assume cs:code,ds:data,es:data
start proc far
main: push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
mov es,ax
setpass:mov ah,09h
lea dx,output0
int 21h
;push bp
mov cx,0
again00: mov ah,07h
int 21h
cmp al,13
jz quit0
mov byte ptr [input1],al
inc input1
inc cx
mov word ptr [actlen],cx
mov ah,02h
mov dl,42
int 21h
jmp again00
quit0:
mov ah,09h
lea dx,output1
int 21h
;pop bp
mov cx,0
again11: mov ah,07h
int 21h
cmp al,13
jz quit2
inc cx
mov byte ptr [input2],al
inc input2
mov ah,02h
mov dl,42
int 21h
jmp again11
quit2:
cmp cx,word ptr [actlen]
jz compare
jmp wrong
compare:
mov cx,actlen
lea si,input1
lea di,input2
repz cmpsb
cmp cx,0
jz over
jmp wrong
wrong: lea dx,output4
mov ah,09h
int 21h
jmp setpass
over: mov ah,09h
lea dx,output2
int 21h
mov ah,09h
lea dx,output5
int 21h
;lea dx,output0
;int 21h
ret
start endp
code ends
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -