1. 程式人生 > >組合語言 使用者名稱密碼登入驗證程式 (dos呼叫)

組合語言 使用者名稱密碼登入驗證程式 (dos呼叫)

使用者輸入使用者名稱密碼,驗證成功則顯示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

結果: