汇编中判断字符串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:
....