| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 769 人关注过本帖
标题:求高手来个win32汇编字符串替换函数
取消只看楼主 加入收藏
爱末流
Rank: 2
等 级:论坛游民
帖 子:101
专家分:16
注 册:2011-6-3
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
求高手来个win32汇编字符串替换函数
求高手来个win32汇编字符串替换函数

网上复制的也可以,我在网上找了下没有找到类似函数

或者来个思路也可以。

伪函数调用 ;invoke ReplaceStr  ("abc123a123","123","aaa")    如:把abc123a123 存在的所有 123 替换成 aaa

在此谢谢了。
搜索更多相关主题的帖子: 网上 字符串 
2012-11-27 17:48
爱末流
Rank: 2
等 级:论坛游民
帖 子:101
专家分:16
注 册:2011-6-3
收藏
得分:0 
回复 3楼 wp231957
不是这个,这个不是字符串的替换
2012-11-27 23:30
爱末流
Rank: 2
等 级:论坛游民
帖 子:101
专家分:16
注 册:2011-6-3
收藏
得分:0 
回复 3楼 wp231957
不过还是感谢下,我已经自己写出来了
2012-11-27 23:30
爱末流
Rank: 2
等 级:论坛游民
帖 子:101
专家分:16
注 册:2011-6-3
收藏
得分:0 
写得不好。

szTestStr1      byte    "AB123ABCABBABAB",0
szTest1         byte    "AB",0
szTest2         byte    "YY",0

调用: invoke ReplaceStr,addr szTestStr1,addr szTest1,addr szTest2

ReplaceStr  proc  _lpSource,_lpBuffer1,_lpBuffer2   
            LOCAL  @dwLength,@dwCount   
            mov    @dwCount,0
            invoke lstrlen,_lpBuffer1
            push   eax
            invoke lstrlen,_lpBuffer2
            mov    @dwLength,eax
            pop    ebx
            .if    eax != ebx
                   mov eax,FALSE
                   ret              
            .endif
            invoke lstrlen,_lpSource
            mov    ecx, eax
            mov    esi,_lpSource
            mov    edi,_lpBuffer1
            mov    ebx,_lpBuffer2           
            .while ecx         
                   push   ecx   
                   invoke lstrlen,_lpBuffer2
                   mov    @dwLength,eax                 
                   .while @dwLength   ;2
                          mov dl,byte ptr [esi]
                          .if dl != byte ptr [edi]
                              .break
                          .else                        
                              inc @dwCount
                              inc esi  
                              inc edi  
                          .endif            
                          dec @dwLength                                                                 
                   .endw      
                          invoke lstrlen,_lpBuffer2
                   .if    @dwCount != eax
                          inc esi
                          mov edi,_lpBuffer1   
                          mov @dwCount,0  
                   .else
                          push esi
                          sub esi,@dwCount  
                          mov edi,esi
                          mov esi,_lpBuffer2
                          mov ecx,@dwCount
                          cld
                          rep movsb
                          pop esi
                          mov edi,_lpBuffer1
                          mov @dwCount,0
                   .endif                                 
             pop ecx
             dec ecx                        
            .endw
            
             ret     
ReplaceStr  endp
2012-11-27 23:35
快速回复:求高手来个win32汇编字符串替换函数
数据加载中...
 
   



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

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