| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1097 人关注过本帖
标题:简单汇编的一个问题!(关于字符匹配的)
只看楼主 加入收藏
heyan0616
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-12-19
收藏
 问题点数:0 回复次数:1 
简单汇编的一个问题!(关于字符匹配的)
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,加上后可以得到预期的正确结果?怎么回事?
知道的人可以帮帮忙么?
搜索更多相关主题的帖子: 汇编 字符 
2007-12-19 12:22
zhoulikelvjj
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2007-4-10
收藏
得分:0 
你不加MOV ES,AX,那么ES还不知道是什么值呢。结果里ES:DI都不知道指向那呢,根本就不是你程序里的字符串了。所以结果肯定都是NO MATCH
2007-12-22 22:57
快速回复:简单汇编的一个问题!(关于字符匹配的)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017737 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved