您现在的位置:首页 >> 基础算法 >> window基础 >> 内容

在Str串中从右边开始查找SubStr第一次出现的位置

时间:2011/9/3 15:36:06 点击:

  核心提示:function RightPos(Const SubStr,Str: string): integer;asm push ebx push esi push edi mov esi,[eax-4]...

function RightPos(Const SubStr,Str: string): integer;
asm
     push ebx
     push esi
     push edi
     mov  esi,[eax-4] //substr长度
     mov  edi,[edx-4] //str长度
     cmp  esi,edi //比较两个的长度
     ja   @@Exit  //大于退出
     mov  ecx,edi
     sub  ecx,esi      
     mov  edi,0
     push esi   //保存子字符串的长度
   @@DoFind:
     mov  ebx,ecx    
     add  ebx,edi
     mov  bl,byte ptr[edx+ebx] //str字符串的倒数Length(SubStr)字符开始
     mov  bh,byte ptr[eax+edi] //SubStr的第一个字符开始循环
     cmp  bl,bh
     jnz  @@Next //如果不相等,则进行下一个操作,将主字符串指针前移一个
     dec  esi    //否则继续向下比较
     jz   @@Ret
     inc  edi
     jmp  @@DoFind

   @@Next:
     Pop  esi  //还原子串长度,进行下一个操作
     dec  ecx
     mov  edi,0
     push esi //保存子串长度
     jmp  @@DoFind //移动主串指针后,继续查找
   @@Ret:
     pop  esi
     inc  ecx
     mov  eax,ecx
     jmp  @@Pop
   @@Exit:
     mov  eax,0
   @@Pop:
     Pop  edi
     pop  esi
     pop  ebx
end;

作者:不得闲 来源:转载
共有评论 0相关评论
发表我的评论
  • 大名:
  • 内容:
  • 盒子文章(www.2ccc.com) © 2024 版权所有 All Rights Reserved.
  • 沪ICP备05001939号