简单汇编的一个问题!(关于字符匹配的)
data SEGMENTpass1 DB 'abcde'
n EQU $-pass1
pass2 DB 30
DB ?
DB 30 DUP(?)
string1 DB 'match$'
string2 DB 'no match$'
data ENDS
code SEGMENT
ASSUME CS:code,DS:data,ES:data
begin: MOV AX,data
MOV DS,AX
MOV ES,AX
LEA DX,pass2
MOV AH,0ah
INT 21h
LEA SI,pass1
LEA DI,pass2
CMP BYTE PTR [DI+1],n
JNE nomatch
MOV CX,n
LEA DI,pass2+2
CLD
REPE CMPSb
JZ match
nomatch: LEA DX,string2
MOV AH,9
INT 21h
JMP over
match: LEA DX,string1
MOV AH,9
INT 21h
over: MOV AH,4ch
INT 21h
code ENDS
END begin
这是一个字符匹配的程序,为什么我将ES:data 和 MOV ES,AX去掉后,就无论怎么输入都显示NO MATCH,加上后可以得到预期的正确结果?怎么回事?
知道的人可以帮帮忙么?