天天看點

南郵微機接口彙編實驗2南郵彙編實驗

南郵彙編實驗

使用者登陸驗證程式的設計

第二次實驗,名稱“使用者登陸驗證程式的設計”,實驗要求:

1)運作程式後,界面首先出現自己的學号,例如“B18060701”

2)在學号下方輸入登入密碼,密碼長度不超過30個字元。密碼内容不能顯示在螢幕上,要求用字元*替代。

3)驗證輸入密碼與事先設定的密碼是否相同,如果密碼正确,給出提示“OK”,程式結束;如果密碼不正确,重新輸出學号,繼續輸入密碼。

4)選作内容:如果連續5次密碼輸入都不正确,界面提示“LOCKED”,退出程式。

提示: 1)為了實作在學号下方輸入登入密碼,輸出學号時後面要跟着回車換行符

2)密碼輸入不能用DOS的0A号功能調用,雖然該功能允許鍵盤輸入字元串,但是會明碼顯示在界面上,可以使用DOS的8号功能調用

3)程式包括資料段和代碼段。其中資料段至少需要定義4個字元串,一個是自己的學号,一個是事先設定的密碼,一個是鍵盤輸入的密碼,一個是“OK”。(實作選作功能時,可以再增加2個變量)

4)記錄鍵盤輸入的密碼串時,需要用到循環操作。密碼輸入如果不滿30就結束,可以自行設定結束标記 5)

判斷輸入密碼串與事先設定的密碼串是否相等,請使用LOOP實作循環判斷。雖然使用大家上課沒有學過的串操作指令也可以實作兩個字元串的比較,但是不利于大家對課堂已學内容的掌握和鞏固,是以請不用使用串操作指令。

;.486
DATA SEGMENT
MESG1 DB 'B18060522$'
MESG2 DB 'INPUT PASSWORD:$'
PWD   DB 30 DUP(?)
PWDLENGTH DB 0

U     DB 'B18xxxxxx'
ULENGTH EQU $-U

P     DB 'xxxxxx'
MLENGTH EQU $-P

WELCOME DB 'OK$'
ERROR   DB 'LOCKD$'
DATA ENDS

CODE SEGMENT
ASSUME CS:CODE,DS:DATA
BEG:  MOV AX,DATA
      MOV DS,AX
      MOV DI,5

NEXT0:
      CMP DI,0
      JZ ERR

	  MOV PWDLENGTH,0
	  MOV AH,09H
      MOV DX,OFFSET MESG1   ;顯示學号
      INT 21H

      MOV AH,02H
      MOV DL,0AH        ;換行
      INT 21H
      
      MOV AH,09H
      MOV DX,OFFSET MESG2   ;顯示input pwd
      INT 21H
      
      MOV CX,MLENGTH
      MOV SI,OFFSET PWD

NEXT1:
      MOV AH,07H       ;無回顯從鍵盤讀入一個字元
      INT 21H
      CMP AL,0DH
      JE  NEXT2            ;等于回車符号則跳轉IND

      MOV [SI],AL
      MOV AH,02H        ;顯示字元
      MOV DX,'*'
      INT 21H
      INC PWDLENGTH     ;輸入的密碼長度+1
      INC SI            ;密碼源變址寄存器的位址+1
      JMP NEXT1

NEXT2:  
      MOV AH,02H
      MOV DL,0AH        ;換行
      INT 21H

      DEC DI

      MOV BX,OFFSET P
      MOV SI,OFFSET PWD    
      MOV CL,PWDLENGTH
      MOV CH,0
	  CMP CX,MLENGTH      ;比較密碼長度
	  JNZ NEXT0

	  MOV CX,MLENGTH

NEXT3:
	  MOV AL,[BX]
      CMP [SI],AL
      JNZ NEXT0
      INC SI
      INC BX
      LOOP NEXT3
      JMP WEL
      
WEL:  MOV AH,09H
      MOV DX,OFFSET WELCOME
      INT 21H
      JMP EXIT

ERR:  MOV AH,09H
      MOV DX,OFFSET ERROR
      INT 21H
      JMP EXIT

EXIT: MOV AH,4CH
      INT 21H

CODE ENDS
      END BEG
           

繼續閱讀