程式執行後,提示使用者輸入賬號和密碼,賬號回顯,密碼不回顯,只有賬號和密碼與程式內定的一致時,才提示登陸成功,登入成功後跳轉至歡迎介面。將賬號和密碼先儲存到記憶體中,當使用者輸入賬號或密碼時,使用cmp指令與記憶體中的資料進行比較。比較難的部分是退格鍵,我是這樣實現的,先判斷使用者按下的字元,若為退格鍵,則將游標左移一格,同時用int 21h的2號子功能輸出空格,游標又右移了一格,此時再將游標左移一格即可。
datas segment use16
tip db 'please input your accout:'
tiplen equ $-tip
tip1 db 'please input your password:'
tiplen1 equ $-tip1
buf db '2333' ;使用者名稱
buflen equ $-buf
pass db '1234' ;密碼
passlen equ $-pass
num db 4 dup(?) ;儲存使用者賬號輸入
num1 db 4 dup(?) ;儲存使用者密碼輸入
info1 db 'success$'
info2 db 'failure$'
wel db 'welcome'
welnum equ $-wel
spa dw ' ' ;暫存cx和dx暫存器的值,防止因使用指令而破壞原有暫存器的值
col db 0 ;記錄行數,用於自動換行
datas ends
codes segment use16
assume cs:codes,ds:datas,es:datas
start:
mov ax,datas
mov ds,ax
mov es,ax
aga:;提示請輸入賬號
mov ax,1301h
mov bh,0
mov bl,01001111b
mov cx,tiplen
mov dh,byte ptr[col] ;自動換行
mov dl,0
mov bp,offset tip
int 10h
;loop迴圈輸入4次,因為賬號內定字元為4個
mov bx,offset num
mov cx,4
ii: mov ah,7
int 21h
cmp al,8
jz back
mov byte ptr[bx],al
mov ah,2
mov dl,al
int 21h
inc bx
loop ii
jmp row
;實現退格功能(賬號部分)
back:
cmp cx,4
jz ii
mov spa,cx
;游標mov ah,3
mov bh,0
int 10h
mov ah,2
sub dl,1
;mov dh,dh
;mov dl,dl
mov bh,0
int 10h ;至此,游標左退一格
mov ah,2
mov dl,' '
int 21h ;在游標位置處輸出空格,游標右移一格
mov ah,3
mov bh,0
int 10h
mov ah,2
sub dl,1
;mov dh,dh
;mov dl,dl
mov bh,0
int 10h ;游標左退一格
dec bx
mov cx,spa
inc cx
jmp ii
row:
;輸出換行
mov ah,2
mov dl,0dh
int 21h
mov ah,2
mov dl,0ah
int 21h
;比較字串(賬號)
mov cx, buflen
mov si, offset num ;使用者輸入
mov di, offset buf ;目標
cldrepe cmpsb
jnz fail
jmp succ
;輸出賬號錯誤資訊,重新輸入賬號
fail:
mov ah,9
mov dx, offset info2
int 21h
add byte ptr[col],2
jmp aga
succ:
;賬號成功
mov dx, offset info1
mov ah,9
int 21h
add byte ptr[col],2
jmp mima
mima:
;提示請輸入密碼
mov ax,1301h
mov bh,0
mov bl,01001111b
mov cx,tiplen1
mov dh,byte ptr[col]
mov dl,0
mov bp,offset tip1
int 10h
;迴圈輸入密碼4次,因為內定密碼字元數是4個
mov bx,offset num1
mov cx,4
ii1:
mov ah,7
int 21h
cmp al,8
jz back1
mov byte ptr[bx],al
mov ah,2
mov dl,'*'
int 21h
inc bx
loop ii1
jmp row1
;實現退格功能(密碼部分)
back1:
cmp cx,4
jz ii1
mov spa,cx
;游標mov ah,3
mov bh,0
int 10h
mov ah,2
sub dl,1
;mov dh,dh
;mov dl,dl
mov bh,0
int 10h ;至此,游標左退一格
mov ah,2
mov dl,' '
int 21h ;在游標位置處輸出空格,游標右移一格
mov ah,3
mov bh,0
int 10h
mov ah,2 ;2號功能鍵有3個入口引數
sub dl,1
;mov dh,dh
;mov dl,dl
mov bh,0
int 10h ;游標左退一格
dec bx
mov cx,spa
inc cx
jmp ii1
;輸出換行
row1:
mov ah,2
mov dl,0dh
int 21h
mov ah,2
mov dl,0ah
int 21h
;比較字串(密碼)
mov cx, passlen
mov si, offset num1 ;使用者輸入
mov di, offset pass ;目標
cldrepe cmpsb
jnz fail1
jmp succ1
;密碼錯誤,提示重新輸入
fail1:
mov ah,9
mov dx, offset info2
int 21h
add byte ptr[col],2
jmp mima
succ1:
;清屏mov ax,0003h
int 10h
;密碼成功,進入歡迎介面
mov ax,1301h
mov bh,0
mov bl,01001111b
mov cx,welnum
mov dh,12
mov dl,(80-welnum)/2
mov bp,offset wel
int 10h
mov ah,4ch
int 21h
codes ends
end start
華工微機與介面實驗 分支和迴圈程式設計實驗
一,實驗內容 設計一資料塊間的搬移程式 設計思想 程式要求把記憶體中一資料區 稱為源資料塊 傳送到另一存貯區 稱為目的資料塊 源資料塊和目的資料塊在存貯中可能有三種情況。對於兩個資料塊分離的情況,資料的傳送從資料塊的首址開始,或者從資料塊的末址開始均可,但對於有部分重疊的情況,則要加以分析,否則重疊...
南郵微機介面彙編實驗2
第二次實驗,名稱 使用者登陸驗證程式的設計 實驗要求 1 執行程式後,介面首先出現自己的學號,例如 b18060701 2 在學號下方輸入登入密碼,密碼長度不超過30個字元。密碼內容不能顯示在螢幕上,要求用字元 替代。3 驗證輸入密碼與事先設定的密碼是否相同,如果密碼正確,給出提示 ok 程式結束 ...
微機顯示程式實驗
今天要交的微機實驗報告分享。顯示程式實驗 一,實驗目的 1.掌握在pc機上以十六進製制形式顯示資料的方法。2.掌握部分dos功能呼叫使用方法。二,實驗裝置 pc微機一台 三,實驗內容 一般來說,有很多程式需要顯示輸出提示執行的狀況和結果,有的還需要將資料區中的內容顯示在螢幕上。本實驗要求將指定資料區...