#if !defined(AFX_MEMORYFINDBYTE__H__INCLUDED_) #define AFX_MEMORYFINDBYTE__H__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 __inline LPVOID MemoryFindByte(SIZE_T dwFrom,LPCVOID lpcSource,SIZE_T dwSourceSize,unsigned char chWhatFind) { LPVOID lpRet=NULL; if (lpcSource && dwSourceSize) { if (dwFromdwFrom jae short end_func std //; count 'up' on string this time sub ecx,eax //; уменьшаем длинну на dwFrom(нач смещен) add edi,ecx //; сдвигаем начало на dwSourceSize(на конец) mov al,chWhatFind //; al=search byte repne scasb //; find that byte inc edi //; di points to byte which stopped scan cmp [edi],al //; see if we have a hit jne short end_func //; yes, point to byte mov lpRet,edi //; ax=pointer to byte end_func: cld pop esi // восстанавливаем содержимое регистра pop edi // восстанавливаем содержимое регистра pop ebx // восстанавливаем содержимое регистра } return(lpRet); } #endif // !defined(AFX_MEMORYFINDBYTE__H__INCLUDED_)