имелось в виду, конечно "\" и "/" т.е. расширение всё же есть? получается, что путь всегда содержить имя файла программы с расширением? в таком случае можно двигаться с конца строки к началу, в поисках: * кавычек * точки * символов-разделителей "\" и "/" Отредактировано Jupiter (Сегодня 88:88:88)
Код (Text): proc ScanDecimalStr buffer push eax push esi pushf cld mov esi, [buffer] xor ecx, ecx local .str_find_decimal: lodsb cmp al, '\' je .ok_separator cmp al, '/' je .ok_separator cmp al, 0 je .end_find jmp .str_find_decimal local .ok_separator: add ecx, 1 jmp .str_find_decimal local .end_find: popf pop esi pop eax ret endp proc ExtractFileDrive buffer, path push eax push esi push edi push ecx pushf cld mov esi,[path] mov edi,[buffer] mov ecx, 3 rep movsb mov al,0 stosb popf pop ecx pop edi pop esi pop eax ret endp proc ExtractFilePath buffer, path push eax push ecx push esi push edi pushf stdcall ScanDecimalStr, [path] local extract_of_str: cld mov esi, [path] mov edi, [buffer] local extract_path: lodsb cmp al, '\' je dec_str cmp al, '/' je dec_str cmp ecx, 0 je end_of_str stosb jmp extract_path local dec_str: stosb sub ecx, 1 jmp extract_path local end_of_str: mov al, 0 stosb popf pop edi pop esi pop ecx pop eax ret endp proc ExtractFileName buffer, path push eax push ecx push esi push edi pushf stdcall ScanDecimalStr, [path] local .extract_of_str: cld mov esi, [path] mov edi, [buffer] local .extract_path: lodsb cmp al, '\' je .dec_str cmp al, '/' je .dec_str cmp ecx, 0 je .extract_name jmp .extract_path local .extract_name: stosb lodsb cmp al, 0 je .end_of_str jmp .extract_name local .dec_str: sub ecx, 1 jmp .extract_path local .end_of_str: mov al, 0 stosb popf pop edi pop esi pop ecx pop eax ret endp proc ExtractFileExt buffer, path push eax push ecx push esi push edi pushf stdcall ScanDecimalStr,[path] cld mov esi,[path] mov edi,[buffer] local .extract_ext_str: lodsb cmp al, 0 je .ok_extract cmp al, '\' je .dec_decimal cmp al, '/' je .dec_decimal cmp al, '.' je .find_ok_ext jmp .extract_ext_str local .find_ok_ext: stosb lodsb cmp al, 0 je .ok_extract jmp .find_ok_ext local .dec_decimal: sub ecx, 1 jmp .extract_ext_str local .ok_extract: mov al, 0 stosb popf pop edi pop esi pop ecx pop eax ret endp proc LowerEngString string push esi edi eax cld mov esi, [string] mov edi, [string] .lower_loop: lodsb cmp al, 0 je .end_loop cmp al, 65 jge .unset_upper .stos_char: stosb jmp .lower_loop .unset_upper: cmp al, 90 jg .stos_char add al, 32 stosb jmp .lower_loop .end_loop: stosb pop eax edi esi ret endp и не парьтесь, смысл думаю понятен...
SPA не расстраивайтесь, это периодическая миграция видов обитателей сайтов букварной культуры в связи с прохождением очередного цикла развития