| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1573 人关注过本帖
标题:比较两个字符串的程序,出错了
只看楼主 加入收藏
汪洋
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-5-5
收藏
 问题点数:0 回复次数:17 
比较两个字符串的程序,出错了
我要实现的功能是比较两个字符串STR1和STR2,相同则输出"MATCH",不同则输出"NO
MATCH".编译能通过,但结果不对,有乱码。

DATA SEGMENT
TONG DB 'MATCH$'
BUTG DB 'NO MATCH$'
STR1 DB 'STRING1'
STR2 DB 'STRING2'
DATA ENDS


CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV CX,7
LEA SI,STR1
MOV DI,OFFSET STR2
REP CMPSB
JNZ NOMATCH
MATCH:
MOV DX,OFFSET TONG
MOV AH,09H
INT 21H
JMP OK
NOMATCH:
MOV DX,OFFSET BUTG
MOV AH,09H
INT 21H
OK:
MOV AH,4CH
INT 21H
RET
CODE ENDS

搜索更多相关主题的帖子: 字符 MATCH DATA SEGMENT 
2006-05-05 23:14
汪洋
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-5-5
收藏
得分:0 

恳请各位大哥大姐,小弟小妹帮帮忙,我的作业快要完成不了了。


2006-05-05 23:29
汪洋
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-5-5
收藏
得分:0 
就这么忍心看着我自杀流涕吗?

2006-05-05 23:30
lj_860603
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:714
专家分:0
注 册:2006-1-25
收藏
得分:0 
呵呵``别哭呀.我想你应该用LOOP循环来做.START那段代码我看有问题.帮你改改吧.

我的原则很简单:不做不喜欢的事!
2006-05-06 09:26
lj_860603
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:714
专家分:0
注 册:2006-1-25
收藏
得分:0 
以下是引用汪洋在2006-5-5 23:14:00的发言:
我要实现的功能是比较两个字符串STR1和STR2,相同则输出"MATCH",不同则输出"NO
MATCH".编译能通过,但结果不对,有乱码。

DATA SEGMENT
TONG DB 'MATCH$'
BUTG DB 'NO MATCH$'
STR1 DB 'STRING1'
STR2 DB 'STRING2'
DATA ENDS


CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX, DATA
MOV DS, AX
MOV CX,7
LEA SI,STR1
MOV DI,OFFSET STR2
DEC SI
DEC DI
LOP:
INC SI
INC DI
CMP [SI],[DI]
JNZ NOMATCH
LOOP LOP
MATCH:
MOV DX,OFFSET TONG
MOV AH,09H
INT 21H
JMP OK
NOMATCH:
MOV DX,OFFSET BUTG
MOV AH,09H
INT 21H
OK:
MOV AH,4CH
INT 21H
RET
CODE ENDS

没调试因为我没有编译器,不知道对不对.


我的原则很简单:不做不喜欢的事!
2006-05-06 09:47
汪洋
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-5-5
收藏
得分:0 

多谢大侠拔刀相助。
我把昨天的程序改了一下,改成了下面这个样子,可输出结果还是一样。

DATA SEGMENT
TONG DB 'MATCH$'
BUTG DB 'NO MATCH$'
STR1 DB 'STRING1'
STR2 DB 'STRING2'
DATA ENDS


CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV SI,OFFSET STR1
MOV DI,OFFSET STR2
MOV CX,07H
CLD

REPZ CMPSB
JNZ NOMATCH
MATCH:
MOV DX,OFFSET TONG
MOV AH,09H
INT 21H
JMP OK
NOMATCH:
MOV DX,OFFSET BUTG
MOV AH,09H
INT 21H
OK:
MOV AH,4CH
INT 21H
RET
CODE ENDS
END START


2006-05-06 10:07
汪洋
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-5-5
收藏
得分:0 

难不成我们的帖子是同时发上去的?哈哈,我正在为这题烦呢。谢谢,我再仔细研究研究。


2006-05-06 10:12
汪洋
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-5-5
收藏
得分:0 
我马上就调试。

2006-05-06 10:13
汪洋
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-5-5
收藏
得分:0 

太好了!我在你的基础上再做了一点改动就对了。
谢谢,下面是最后的代码。
DATA SEGMENT
TONG DB 'MATCH$'
BUTG DB 'NO MATCH$'
STR1 DB 'STRING1'
STR2 DB 'STRING2'
DATA ENDS


CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX, DATA
MOV DS, AX
MOV CX,7
MOV SI,OFFSET STR1
MOV DI,OFFSET STR2
LOP:
CMPSB
JNZ NOMATCH
LOOP LOP
MATCH:
MOV DX,OFFSET TONG
MOV AH,09H
INT 21H
JMP OK
NOMATCH:
MOV DX,OFFSET BUTG
MOV AH,09H
INT 21H
OK:
MOV AH,4CH
INT 21H
RET
CODE ENDS
END START


2006-05-06 10:34
汪洋
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-5-5
收藏
得分:0 
对了,刚才编译你给我的代码的时候,编译器说 CMP [SI],[DI] 这一句有错,好像是因为操作数的类型不对,我英文不好,也不知道这是什么原因。

2006-05-06 10:39
快速回复:比较两个字符串的程序,出错了
数据加载中...
 
   



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

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