{*************************************************************}
{* 名称: RightPos *}
{* 功能: 在str串中从右边开始查找SubStr第一次出现的位置 *}
{* 作者: 不得闲 *}
{* 时间: 2008-07-23 *}
{*************************************************************}
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;