ХАНДЫФАР

Функция FindFirstFileEx выполняет поиск первого файла, соответствующего указанному шаблону имени, и сохраняет его имя в предоставленный буфер. Функция FindFirstFileEx автоматически выравнивает стек на 6 байт.

Параметры:

  1. Указатель на строку шаблона имени файла (например, "*.txt").
  2. Указатель на буфер, куда будет сохранено имя найденного файла.
  3. Атрибуты файла, которые нужно учитывать при поиске (например, скрытые, системные и т.д.).

Возвращаемое значение:

  • Если CF = 0: Файл найден.
  • Если CF = 1: Файл не найден. AX содержит код ошибки.

Состояние флагов:

  • Функция влияет на все флаги.

Особенности:

  • Функция не изменяет значения регистров, кроме AX и флагов.

  1. title Автор: Довгополов Евгений Сергеевич
  2. .286C
  3. .model small
  4. .stack 100h
  5. data segment public
  6. ____pattern db "*.txt", 0
  7. ____fmtout__db "Нашёл файл: ${.s}\n\0"
  8. ____buffer__db 13 dup(0)
  9. data ends
  10. code segment public
  11. ____assume _ds:data, cs:code
  12. ____include Handyfar.inc
  13. ____include Handymac.inc
  14. ____main proc
  15. ________call____SetDataSegment
  16. ________push____0
  17. ________pushs___es:[buffer]
  18. ________pushs___ds:[pattern]
  19. ________call____FindFirstFileEx
  20. ________pushs___ds:[buffer]
  21. ________push____BLACK
  22. ________push____CYAN
  23. ________pushs___ds:[fmtout]
  24. ________call____WriteStringExD
  25. ________add_____sp, 2
  26. ________push____0
  27. ________call____ExitProcessEx
  28. ____main endp
  29. code ends
  30. end main
Функция FindFirstFileEx выполняет поиск первого файла, соответствующего указанному шаблону имени, и сохраняет его имя в предоставленный буфер. Функция FindFirstFileEx автоматически выравнивает стек на 6 байт.

Параметры:

  1. Указатель на строку шаблона имени файла (например, "*.txt").
  2. Указатель на буфер, куда будет сохранено имя найденного файла.
  3. Атрибуты файла, которые нужно учитывать при поиске (например, скрытые, системные и т.д.).

Возвращаемое значение:

  • Если CF = 0: Файл найден.
  • Если CF = 1: Файл не найден. AX содержит код ошибки.

Состояние флагов:

  • Функция влияет на все флаги.

Особенности:

  • Функция не изменяет значения регистров, кроме AX и флагов.

  1. title Автор: Довгополов Евгений Сергеевич
  2. .286C
  3. .model small
  4. .stack 100h
  5. data segment public
  6. ____pattern db "*.txt", 0
  7. ____fmtout__db "Нашёл файл: ${.s}\n\0"
  8. ____buffer__db 13 dup(0)
  9. data ends
  10. code segment public
  11. ____assume _ds:data, cs:code
  12. ____include Handyfar.inc_________; Подключаем файл с функциями
  13. ____include Handymac.inc_________; Подключаем файл с макросами
  14. ____main proc
  15. ________call____SetDataSegment___; Вызываем процедуру SetDataSegment
  16. ________push____0________________; 3-й: Ложим на вершину стека аттрибуты
  17. ________pushs___es:[buffer]______; 2-й: Ложим на вершину стека адрес buffer
  18. ________pushs___ds:[pattern]_____; 1-й: Ложим на вершину стека адрес pattern
  19. ________call____FindFirstFileEx__; Вызываем процедуру FindFirstFileEx(pattern, buffer, 0) := AX и CF
  20. ________pushs___ds:[buffer]______; Ложим на вершину стека адрес переменной buffer
  21. ________push____BLACK____________; Ложим на вершину стека значение цвета текста
  22. ________push____CYAN_____________; Ложим на вершину стека значение цвета фона
  23. ________pushs___ds:[fmtout]______; Ложим на вершину стека адрес переменной fmtout
  24. ________call____WriteStringExD___; Вызываем процедуру WriteStringExD(fmtout, CYAN, BLACK, buffer)
  25. ________add_____sp, 2____________; Выравниваем стек на 2 байта. Извлекаем из стека buffer
  26. ________push____0________________; Ложим на вершину стека байтовое значение кода возврата
  27. ________call____ExitProcessEx____; Вызываем процедуру ExitProcess(0)
  28. ____main endp
  29. code ends
  30. end main
Made on
Tilda