一個彙編小程式:使用者登入驗證程式
阿新 • • 發佈:2019-01-08
這是我們學彙編時,要求做的一個小實驗,感覺挺有趣的,就想發到部落格上來的。初學組合語言的同學,也可以借鑑參考一下。
實驗要求:
程式執行後,給出操作提示,請使用者鍵入使用者名稱和密碼;使用者在鍵入密碼時,程式不回顯鍵入字元,只有當用戶鍵入的使用者名稱、密碼字串和程式內定的字串相同時,顯示歡迎介面,並返回DOS。
程式碼裡面有比較詳細的註釋,感興趣的同學可以看看。
程式碼:
;FILENAME: EXERCISE2.ASM .486 DATA SEGMENT USE16 MESG1 DB 0DH,0AH,'Please input username:$' MESG2 DB 0DH,0AH,'Please input password:$' MESG3 DB 0DH,0AH,'LOGIN INCORRECT!$' USERNAME DB 'B12040331$' PASSWORD DB '123456789$' FLAG DB ? BUF DB 30 DB ? DB 30 DUP(?) DATA ENDS CODE SEGMENT USE16 ASSUME CS:CODE,DS:DATA BEG: MOV AX,DATA MOV DS,AX MOV ES,AX AGA: MOV FLAG,0 MOV AH,9 ;顯示提示資訊(使用者名稱) MOV DX,OFFSET MESG1 INT 21H MOV AH,0AH ;輸入使用者名稱 MOV DX,OFFSET BUF INT 21H MOV BL,BUF+1 MOV BH,0 MOV SI,OFFSET BUF+2 MOV BYTE PTR [BX+SI],'$' MOV SI,OFFSET BUF+2 ;驗證使用者名稱是否正確 MOV DI,OFFSET USERNAME MOV CX,9 CLD REPE CMPSB MOV FLAG,CL MOV AH,9 ;顯示提示資訊(密碼) MOV DX,OFFSET MESG2 INT 21H MOV SI,OFFSET BUF+2 ;處理輸入密碼 INPUT: MOV AH,0CH ;清除鍵盤緩衝區 INT 21H MOV AH,8 INT 21H CMP AL,13 JZ NEXT MOV [SI],AL INC SI MOV AH,2 MOV DL,2AH INT 21H JMP INPUT NEXT: CMP FLAG,0 JNZ LERROR MOV SI,OFFSET BUF+2 ;驗證密碼是否正確 MOV DI,OFFSET PASSWORD MOV CX,9 CLD REPE CMPSB JNZ LERROR MOV AH,4CH INT 21H LERROR: MOV AH,9 MOV DX,OFFSET MESG3 INT 21H JMP AGA CODE ENDS END BEG
執行效果如下: