Assembly 如何通过将密码更改为来隐藏/保护密码*
我正在制作一个程序,要求用户输入密码,如果密码输入正确,它将显示名称Assembly 如何通过将密码更改为来隐藏/保护密码*,assembly,emu8086,Assembly,Emu8086,我正在制作一个程序,要求用户输入密码,如果密码输入正确,它将显示名称MSG3和IDMSG4。下面的代码运行良好,但我只希望密码输入被视为*字符,而不是普通字符串。如果可能的话,我想把用户的输入限制在3个字符以内。我对这门语言不熟悉,希望任何人都能帮助我 代码如下: .DATA MSG1 DB 10,13,’Enter Password: $’ MSG2 DB 10,13,’Incorrect Password! $’ MSG3 DB 10,13,’Sam Smith $’ MSG4 DB 1
MSG3
和IDMSG4
。下面的代码运行良好,但我只希望密码输入被视为*字符,而不是普通字符串。如果可能的话,我想把用户的输入限制在3个字符以内。我对这门语言不熟悉,希望任何人都能帮助我
代码如下:
.DATA
MSG1 DB 10,13,’Enter Password: $’
MSG2 DB 10,13,’Incorrect Password! $’
MSG3 DB 10,13,’Sam Smith $’
MSG4 DB 10,13,’201810282 $’
STR1 DB 'tal' ;Password
STR2 DB "*$"
P1 LABEL BYTE ;Start of data type
M1 DB 0FFH ;Code so the user can type input. Assigning maximum length of array
L1 DB ? ;used to Get the length of the entered String by user.
P11 DB 0FFH DUP (‘$’) ;p11 is the name referred for the Array in the program
;LEA DX, STR2 ; display *
DATA ENDS
DISPLAY MACRO MSG
MOV AH,9
LEA DX,MSG
INT 21H
ENDM
.CODE
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
DISPLAY MSG1
LEA DX,P1
MOV AH,0H
INT 21H
LEA SI,STR1
LEA DI,P11
MOV CX,3
CHECK:
MOV AL,[SI]
CMP [DI],AL
JNE WRONG
INC SI
INC DI
LOOP CHECK
DISPLAY MSG3
DISPLAY MSG4
JMP EXIT
WRONG:
DISPLAY MSG2
JMP EXIT
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
MOV-AH,0H
INT-21H
在任何情况下,如果您想在没有回声的情况下读取字符,可以使用INT-21H
子功能7或8。