标题:比较两个字符串的程序,出错了
只看楼主
汪洋
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-5-5
得分:0 
看了你的程序后,我把刚才的程序加上(MOV AX,DATA MOV DS,AX)就也正确了。
但为什么非要这两句?不是在ASSUME语句中已经给DS分配了吗?

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 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:49
ttzz8
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2006-5-4
得分:0 

看了LZ的两张萜子,MS你都是因为没有加这两句
MOV AX,DATA
MOV DS,AX

才导致出项乱码的啊 !!!!
除了一个寄存器(具体我也记不太清楚了,现在书也没带回家不过这个寄存器也用的不多的好象跟栈有关),它的对应的段地址是所在的寄存器是SS,其他我们常用的寄存器所对应的段地址所在的寄存器是DS,所以是一定要加滴!


2006-05-06 14:28
汪洋
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-5-5
得分:0 
多谢解惑!
楼上是说SP的段地址在SS吧?
但ASSUME语句的作用又是什么呢?

2006-05-06 15:16
ttzz8
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2006-5-4
得分:0 

饿~~~~好象是的!
不过ASSUME具体是干吗的我也不太清楚了!不好意思!


2006-05-06 22:30
ttzz8
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2006-5-4
得分:0 
http://www.bc-cn.net/bbs/dispbbs.asp?boardID=126&ID=55414&page=1
看看这个连接,那个公子解释了下.呵呵!!本人不才,只能靠别人!不要笑哈!

2006-05-06 22:36
汪洋
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-5-5
得分:0 
这个问题公子吕也给我解答过,
但我还是没大弄明白:理解能力实在低下@#¥
好了,我不能在这个问题上再给大家添麻烦了。
谢谢各位的帮助

2006-05-07 09:59
xiaoping622
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2006-6-2
得分:0 

看看这个,可能能帮助你!
data segment
sting1 db 'people'
sting2 db 'person'
buf1 db 'match$'
buf2 db 'no match$'
n equ $-sting1
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax

mov si,offset sting1
mov di,offset sting2
mov cx,n
cld
repe cmps
cmp cx,0
jz equ1
mov dx,offset buf2
jmp next

equ1:mov dx,offset buf1
next:mov ah,09h
int 21h

mov ah,4ch
int 21h

code ends
end start


Give me a world,a beautiful worle!
2006-06-02 23:17
xiaoping622
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2006-6-2
得分: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 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
当;str1 与 str2 相同时,好像比较不出来啊!我试过了,不知道你们试了没有........

Give me a world,a beautiful worle!
2006-06-25 16:21



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-62074-1-1.html




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

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