Доброго времени суток. Недавно начал изучать МАСМ и столкнулся с проблемой. Пытаюсь написать рекурсивный поиск файлов, но что то не совсем получается. Вот код: Код (Text): .386 .model flat, stdcall option casemap:none include windows.inc include kernel32.inc include user32.inc includelib user32.lib includelib kernel32.lib .data MsgCaption db "C:\FileList.txt",0 CRLF db 13,10,0 .data? .code proba proc FullPath : DWORD LOCAL hFile : DWORD LOCAL dwByte : DWORD LOCAL Buff[1024]: byte pushad invoke lstrcpy, addr Buff, FullPath invoke lstrcat, addr Buff, offset CRLF invoke CreateFile, offset MsgCaption, GENERIC_WRITE, FILE_SHARE_WRITE, 0, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 mov hFile, eax invoke SetFilePointer, hFile, 0, 0, FILE_END invoke lstrlen, addr Buff mov dwByte, eax invoke WriteFile, hFile, addr Buff, dwByte, addr dwByte, 0 invoke CloseHandle, hFile popad ret proba endp Find_Files proc uses edi FilePath : DWORD, lpFunction : DWORD LOCAL hFind : DWORD LOCAL FindFileData : WIN32_FIND_DATA mov esi, FilePath invoke lstrlenA, esi mov byte ptr [esi + eax], 02Ah mov byte ptr [esi + eax + 1], 00h mov edi, eax invoke FindFirstFileA, FilePath, addr FindFileData mov hFind, eax inc eax jz @exit @loop_search: mov byte ptr [esi + edi], 00h lea edx, FindFileData.cFileName cmp byte ptr [edx], 02Eh jz @next_search invoke lstrcatA, esi, edx lea edx, FindFileData.dwFileAttributes test dword ptr [edx], 010h jz @file_found invoke lstrlenA, esi mov byte ptr [esi + eax], 05Ch mov byte ptr [esi + eax + 1], 00h invoke Find_Files, FilePath, lpFunction jmp @next_search @file_found: push esi call lpFunction @next_search: invoke FindNextFileA, hFind, addr FindFileData test eax, eax jnz @loop_search invoke FindClose, hFind @exit: ret Find_Files endp SearchForFiles proc StartDir : DWORD, lpFunction : DWORD LOCAL Count : BYTE invoke SetErrorMode, 01h invoke lstrlenA, StartDir test eax, eax jz @drive_search mov esi, StartDir mov byte ptr [esi + eax], 05Ch mov byte ptr [esi + eax + 1], 00h invoke Find_Files, esi, lpFunction jmp @exit @drive_search: mov Count, 041h @loop_drive: mov cl, Count mov byte ptr [ebx], cl mov byte ptr [ebx + 1], 03Ah mov byte ptr [ebx + 2], 05Ch mov byte ptr [ebx + 3], 00h inc Count invoke GetDriveType, ebx test eax, eax jz @next_drive dec eax test eax, eax jz @next_drive invoke Find_Files, ebx, lpFunction ; invoke MessageBox, 0, ebx,ebx, 0 @next_drive: cmp Count, 05Bh jne @loop_drive @exit: ret SearchForFiles endp start: invoke SearchForFiles, 0, offset proba invoke ExitProcess,0 end start Даже не знаю где ошибка - программа отказывается искать файлы когда пытаюсь перечислить доступные диски. Буду очень признателен если направите на путь истинный. Благодарю за внимание.