80x86組合語言:在螢幕上模擬輸入密碼的過程
用 1 號功能呼叫,可以輸入一個字元,並且當場顯示。這種方法不適於輸入密碼。
用 7 號功能呼叫,可以輸入一個字元,當場並不顯示。這就可以輸入密碼了。
密碼輸入後,可以在螢幕上顯示出其它的字元,比如《*》,便於觀察輸入字元的個數。
有下面一個題目,打算模擬輸入密碼的過程:
但是,程式中錯誤不少,經過做而論道的修改,可以正常工作了。
程式如下:
;MIMA
;==================================
DATA SEGMENT
BUF1 DB 'HAPPY!'
BUF3 DB 10, 13, 'PLEASE INPUT PASSWORD : $'
BUF4 DB 10, 13, 'ERROR ! $'
BUF5 DB 6 DUP(?)
BUF6 DB 10, 13, 'WELLCOM ! $'
COUNT DB 3
DATA ENDS
;----------------------------------
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, ES:DATA
BEG:
MOV AX, DATA
MOV DS, AX
MOV ES, AX
IIII:
MOV AH, 09H
MOV DX, OFFSET BUF3
INT 21H
MOV BX, OFFSET BUF5
MOV CX, 06H
LAST:
MOV AH, 07H ;輸入字元,但是不顯示
INT 21H
MOV [BX], AL
MOV AH, 02H
MOV DL, '*' ;用星號 * 來顯示
INT 21H
INC BX
LOOP LAST
;--------------------------
MOV DI, OFFSET BUF5
MOV SI, OFFSET BUF1
CLD
MOV CX, 6
REPE CMPSB ;字串比較
JZ GOOD
MOV AH, 09H
MOV DX, OFFSET BUF4
INT 21H
DEC COUNT
JZ EXIT
JMP IIII
GOOD:
MOV AH, 09H
MOV DX, OFFSET BUF6
INT 21H
EXIT:
MOV AH, 4CH
INT 21H
CODE ENDS
END BEG
;==================================