注册 登录
编程论坛 汇编论坛

简单汇编的一个问题!(关于字符匹配的)

heyan0616 发布于 2007-12-19 12:22, 1106 次点击
data          SEGMENT
pass1         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,加上后可以得到预期的正确结果?怎么回事?
知道的人可以帮帮忙么?
1 回复
#2
zhoulikelvjj2007-12-22 22:57
你不加MOV ES,AX,那么ES还不知道是什么值呢。结果里ES:DI都不知道指向那呢,根本就不是你程序里的字符串了。所以结果肯定都是NO MATCH
1