汇编语言 用户名密码登录验证程序 (dos调用)

时间:2023-02-21 20:48:30

用户输入用户名密码,验证成功则显示welcome!

主要是dos功能的调用。

2号调用 输入参数dl 显示在屏幕上

9号调用 输出ds:dx指向的字符串 必须以‘$'结尾

a号调用 把用户的输出保存起来 注意定义的时候   db 长度 ,?,长度 dup (?) 

代码:

;登陆验证程序
data segment
first db 'usename:',0dh,0ah,'$'
second db 'password:',0dh,0ah,'$'
databasename db 'think'
databasepassword db '123456'
tempname db 15,?, 15 dup (?)
countname db $-tempname-02h,'$'
temppassword db 15,?,15 dup (?)
countpassword db $-temppassword-02h
welcome db 'welcome!','$'

data ends

code segment
assume cs:code,ds:data,es:data
start:
mov ax,data
mov ds,ax

;dos 调用显示欢迎界面
mov ah,09h
mov dx,offset first
int 21h

;dos 0ah 调用用户输入
mov ah,0ah
mov dx,offset tempname
int 21h

cmp byte ptr tempname+1,05h ;验证长度
jnz exit

mov cx,5 ;字符串比较
mov si,offset databasename
mov di,offset tempname+2
mov ax,data
mov es,ax
cld
repe cmpsb
jnz exit

mov dx,offset tempname+2 ;显示输入的字符串
mov byte ptr tempname[7],'$'
call dosshow

;提示输入password
mov ah,09h
mov dx,offset second
int 21h

;dos 0ah 调用用户输入
mov ah,0ah
mov dx,offset temppassword
int 21h

cmp byte ptr temppassword+1,06h
jnz exit

mov cx,6
mov si,offset databasepassword
mov di,offset temppassword+2
mov ax,data
mov es,ax
cld
repe cmpsb
jnz exit

mov dx,offset temppassword+2
mov byte ptr temppassword[8],'$'
call dosshow

mov ah,09h
mov dx,offset welcome
int 21h

exit:
mov ax,4c00h
int 21h

dosshow proc
mov ah,09h
int 21h

mov dl,0dh
mov ah,02h
int 21h

mov dl,0ah
mov ah,02h
int 21h

ret
dosshow endp

code ends
end start

结果:

汇编语言 用户名密码登录验证程序 (dos调用)