1. 程式人生 > >80x86組合語言:在螢幕上模擬輸入密碼的過程

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

;==================================