21,458
社区成员
发帖
与我相关
我的任务
分享
showcrlf macro
mov ah,2
mov dl,10
int 21h
mov ah,2
mov dl,13
int 21h
endm
data segment
;;;;
inputcount db 0
;;;;
string0 db 'Please input the password:$'
string1 db 'Please input the password again:$'
password db 50,0,50 dup(?)
string2 db 50,0,50 dup(?)
string3 db 'Welcome to use!$'
string4 db 'Password error!$'
data ends
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
mov al,0
;;;;;;;;;;
mov inputcount, al
;;;;;;;;;;
start_2:
mov ah,9
lea dx,string0
int 21h
showcrlf
mov ah,0ah
lea dx,password
int 21h
showcrlf
start_1:
mov ah,9
lea dx,string1
int 21h
showcrlf
mov ah,0ah
lea dx,string2
int 21h
showcrlf
lea si,string2[1]
;修改此处
;lea di,password
lea di,password[2]
;----此处判断输入的字符是不是9位,如果不需要9位,可将此处代码删除-------------
;mov dl,[si]
;cmp dl,9
;jne error
;-----------------------------------------------------------------------------
mov cx,0
mov cl,9
lop:
inc si
mov bh,[si]
mov bl,[di]
cmp bh,bl
jne error
inc di
loop lop
jmp r
error: mov ah,9
lea dx,string4
int 21h
showcrlf
;;;;;;;;;
mov al, inputcount
;;;;;;;;;
inc al
;;;;;;;;;
mov inputcount, al
;;;;;;;;;
cmp al,3
jne start_1
jmp exit
r:mov ah,9
lea dx,string3
int 21h
exit:
mov ah,4ch
int 21h
code ends
end start
CR=0DH
LF=0AH
DSEG SEGMENT PARA
STRLEN = 50
BUFSIZE = STRLEN + 1
STR1 DB BUFSIZE
DB 0
DB BUFSIZE DUP(0)
STR2 DB BUFSIZE
DB 0
DB BUFSIZE DUP(0)
INMES DB 'PLEASE INPUT STRING : ','$'
EMPTY DB 'EMPTY INPUT .',CR,LF,'$'
EQUMES DB 'EQUAL .',CR,LF,'$'
NEQMES DB 'NOT EQUAL .',CR,LF,'$'
CRLF DB CR,LF,'$'
DSEG ENDS
SSEG SEGMENT PARA STACK
STKSIZE=40H
DB STKSIZE DUP(0)
SSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,SS:SSEG,DS:DSEG,ES:DSEG
START : NOP
MOV AX,DSEG
MOV DS,AX
MOV ES,AX
LEA DX,STR1
CALL READSTR
LEA DX,STR2
CALL READSTR
LEA SI,STR1
MOV CH,[SI+1]
LEA DI,STR2
MOV CL,[DI+1]
CMP CH,CL
JNZ S1
XOR CH,CH
ADD SI,2
ADD DI,2
CLD
REPZ CMPSB
JNZ S1
S3:LEA DX,EQUMES
CALL DISPMES
JMP SHORT S2
S1:LEA DX,NEQMES
CALL DISPMES
S2:MOV AX,4C00H
INT 21H
READSTR PROC
R2:MOV BX,DX
LEA DX,INMES
CALL DISPMES
MOV DX,BX
MOV AH,0AH
INT 21H
XOR CH,CH
MOV CL,[BX+1]
LEA DX,CRLF
CALL DISPMES
JCXZ R1
RET
R1:LEA DX,EMPTY
CALL DISPMES
JMP SHORT R2
READSTR ENDP
DISPMES PROC
PUSH AX
MOV AH,9
INT 21H
POP AX
RET
DISPMES ENDP
CSEG ENDS
END START