| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付赛孚耐:软件保护加密专家
身份认证令牌USB KEY   
共有 583 人关注过本帖
标题:简单汇编的一个问题!(关于字符匹配的)
收藏  订阅  推荐  打印 
heyan0616
Rank: 1
等级:新手上路
帖子:1
积分:110
注册:2007-12-19
简单汇编的一个问题!(关于字符匹配的)

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: 2
等级:注册会员
帖子:85
积分:1036
注册:2007-4-10

你不加MOV ES,AX,那么ES还不知道是什么值呢。结果里ES:DI都不知道指向那呢,根本就不是你程序里的字符串了。所以结果肯定都是NO MATCH
2007-12-22 22:57
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.060870 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved