查子串出现的次数

pshlcysz 2011-05-26 10:06:04
各位大侠 求助了 我下面的程序是实现在一个字符串中查找指定字符串出现的次数 写了好久了 还是没有彻底解决所有问题 请大家帮忙啊



data segment
str0 db 'abababa','$'
str1 db 'aba','$'
count db 0
data ends
stk segment stack
db 20 dup(?)
stk ends
code segment
assume cs:code,ds:data,ss:stk
start:
mov ax,data ;建立用户数据段
mov ds,ax
lea si,str0 ;定位原串的指针
again:

lea di,str1 ;定位字串的初始指针
compa0:
mov al,[si]
mov bl,[di]
cmp al,bl ;相等与否
jnz neq ;不相等转neq
push si
equ1:
inc di
neq:
inc si
cmp byte ptr [si],'$'
jz ending
cmp byte ptr [di],'$'
jnz next
lea di,str1
mov al,count
add al,1
mov count,al
pop si
inc si
jmp compa0
next:
mov al,[si]
mov bl,[di]
cmp al,bl
jnz neq
jmp equ1


ending:
mov ah,4ch
int 21h
code ends
end start
...全文
218 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
pshlcysz 2011-05-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 simajian_gg 的回复:]
看看改成这样行不行?

data segment
str0 db 'abababa','$'
str1 db 'aba','$'
count db 0
data ends
stk segment stack
db 20 dup(?)
stk ends
code segment
assume cs:code,ds:data,s……
[/Quote]


哥们 太谢谢了 这个OK了
iretf 2011-05-28
  • 打赏
  • 举报
回复
看看改成这样行不行?

data segment
str0 db 'abababa','$'
str1 db 'aba','$'
count db 0
data ends
stk segment stack
db 20 dup(?)
stk ends
code segment
assume cs:code,ds:data,ss:stk
start:
mov ax,data ;建立用户数据段
mov ds,ax
lea si,str0 ;定位原串的指针

again:
lea di,str1 ;定位字串的初始指针
push si
compa0:
mov al,[si]
mov bl,[di]
cmp al,bl ;相等与否
jnz neq ;不相等转neq
equ1:
inc si
cmp byte ptr [si],'$'
jnz next
inc di
cmp byte ptr [di],'$'
jnz ending
add count,1
jmp ending
next:
inc di
cmp byte ptr [di],'$'
jnz compa0
add count,1
pop si
inc si
jmp again

neq:
pop si
inc si
cmp byte ptr [si],'$'
jz ending
jmp again

ending:
mov ah,4ch
int 21h
code ends
end start
masmaster 2011-05-26
  • 打赏
  • 举报
回复
慢慢写别着急。

21,453

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧