首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

汇编中判断字符串二是否是字符串1的子串

2013-01-12 
汇编中判断字符串2是否是字符串1的子串小弟刚学汇编,入门中。课题要求如题,判断字符串2是否是字符串1的字串

汇编中判断字符串2是否是字符串1的子串
小弟刚学汇编,入门中。课题要求如题,判断字符串2是否是字符串1的字串。小弟的源码如下,但是始终输出的是no,改动了很多都还是有问题。求大神鉴定!并给出详细解释!谢谢






        .modelsmall
.stack
.data
sbufferdb'How are you?$'
dbuffer db'are$'
yes1db'yes$'
no1db'no$'
.code
.startup
movsi,offset sbuffer
movdi,offset dbuffer
cld
movcx,10     ;比较10次
again:pushcx        
movcx,3      ;字符串长度
pushsi;si入栈
repz cmpsb       ;开始比较
cmpcx,0     ;假如cx等于0,跳转到yes
jzyes
popsi       ;si出栈
incsi       ;指向下一个字符
movdi,offset dbuffer      ;di初始化为第一个字符
popcx       ;cx出栈并且减1
deccx
loopagain     ;循环
callno        ;跳转到no

yes:movdx,offset yes1
movah,9
int21h
movah,4ch
int21h

no:movdx,offset no1
movah,9
int21h
movah,4ch
int21h

end
[解决办法]


lea dx,str1

str_compare:
cmp [dx],0
jz str_isnot_equ
mov si,dx
lea di,str2
cld
repz cmpsb
jz str_is_equ
inc dx
jmp str_compare

str_is_not_equ:
......
str_is_equ:
....

[解决办法]
pop cx       ;cx出栈并且减1
dec cx          //这里-1  这句不要   
loop again     ;循环  //loop 也会-1

如果加上dec cx的话
pop cx
dec cx
test cx,cx
jnz again
下面就不用加loop again了

热点排行