FILE DB 'E:\PW.BAT',00
NPW DB 'Please enter your password and press the return key:',13,10,36
INFO1 DB 0DH,0AH,'--------------------------',0DH,0AH,'You can make two choice:',0DH,0AH,0DH,0AH,'$'
INFO2 DB '1.Reset passport',0DH,0AH,'$'
INFO3 DB '2.Exit',0DH,0AH,'$'
INFO4 DB 0DH,0AH,'-------------------',0DH,0AH,'|INVALID SELECTION|',0DH,0AH,'-------------------',0DH,0AH,'$'
OPW DB 'Please input your old password and press the return key:',13,10,36
ERR DB 13,10,'YOUR PASSWORD ERROR!',36
MSG DB 13,10,'INPUT NEW PASSWORD:',36
PW DB 19,18 DUP(?)
PWS DB 19 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA
START:
MAIN PROC NEAR
MOV AX,DATA
MOV DS,AX
MOV ES,AX
LEA DX,FILE
MOV AX,3D02H
INT 21H
JC L1
mov bx,ax ;保存文件句柄
JMP HK
L1:
LEA DX,NPW
MOV AH,09H
INT 21H
CALL SET
LEA DX,FILE
MOV CX,00H
MOV AH,3CH
INT 21H
MOV BX,AX
CALL SET1
JMP HK
HK:
LEA DX,INFO1
MOV AH,09H
INT 21H
LEA DX,INFO2
INT 21H
LEA DX,INFO3
INT 21H
MOV AH,01H
INT 21H
CMP AL,'1'
JE LA
CMP AL,'2'
JE EXIT
LEA DX,INFO4
MOV AH,09H
INT 21H
JMP HK
LA:
;PUSH AX 用bx保存句柄,直接用就可以,沒必要用堆棧了
LEA DX,OPW
MOV AH,09H
INT 21H
CALL SET
LEA DX,FILE
MOV AX,3D01H
INT 21H
MOV BX,AX
LEA DX,PWS
MOV CX,1
MOV AH,3FH
INT 21H
MOV CX,WORD PTR PWS
DEC CX
LEA DX,PWS+1
MOV AH,3FH
INT 21H
LEA SI,PW
LEA DI,PWS
CLD
MOV CL,PW
XOR CH,CH
REPE CMPSB
CMP CX,0
JZ LD
LC:
LEA DX,ERR
MOV AH,09H
INT 21H
JMP HK
LD:
LEA DX,MSG
MOV AH,09H
INT 21H
mov ah,3eh
int 21h ;關閉文件再打開,也可以用移動文件指針到文件開頭
LEA DX,FILE
MOV AX,3D01H
INT 21H
MOV BX,AX
CALL SET
CALL SET1
EXIT:
MOV AH,4CH
INT 21H
MAIN ENDP
SET PROC NEAR
MOV CL,12H
CLD
LEA SI,PW
;MOV SI,13H 這句什麽意思?錯誤?
INC SI
MOV DL,'*'
I1:
MOV AH,08H
INT 21H
CMP AL,0DH
JZ R1
MOV AH,02H
CMP CL,0
JNZ I2
MOV DL,07H
INT 21H
JMP I1
I2:
MOV [SI],AL
INT 21H
INC SI
DEC CL
JMP I1
R1:
SUB PW,CL
RET
SET ENDP
SET1 PROC NEAR
LEA DX,PW
MOV CL,PW
AND CX,0FFH
MOV AH,40H
INT 21H
mov ah,3eh
int 21h ;關閉文件
RET
SET1 ENDP
CODE ENDS
還有錯誤