ХАНДЫФАР

Функция CreateFolderEx создаёт каталог\папку с указанным именем. Функция CreateFolderEx автоматически выравнивает стек на 2 байта.

Параметры:

  1. Указатель на строку с именем каталога\папки, завершающуюся нулём 0.

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

  • Если CF = 0: AX Каталог\папка успешно создан(а).
  • Если CF = 1: AX содержит код ошибки.

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

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

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

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

  1. title Автор: Довгополов Евгений Сергеевич
  2. .286C
  3. .model small
  4. .stack 100h
  5. data segment public
  6. ____fName____db "Assembly", 0
  7. ____cSuccess db "Папка была успешно "
  8. _____________db "создана!\0"
  9. ____cError___db "Произошла ошибка при "
  10. _____________db "создании '%s'. Код "
  11. _____________db "ошибки: %d\0"
  12. data ends
  13. code segment public
  14. ____assume _ds:data, cs:code
  15. ____include Handyfar.inc
  16. ____include Handymac.inc
  17. ____main proc
  18. ________call____SetDataSegment
  19. ________pushs___ds:[fName]
  20. ________call____CreateFolderEx
  21. ________jnc_____@NoCreateFolderError
  22. ________push____ax
  23. ________pushs___ds:[fName]
  24. ________leaax___ds:[cError]
  25. ________call____PrintFormatString
  26. ________add_____sp, 4
  27. ________jmp_____@Done
  28. ____@NoCreateFolderError:
  29. ________leaax___ds:[cSuccess]
  30. ________call____WriteStringEx
  31. ____@Done:
  32. ________push____0
  33. ________call____ExitProcessEx
  34. ____main endp
  35. code ends
  36. end main
Функция CreateFolderEx создаёт каталог\папку с указанным именем. Функция CreateFolderEx автоматически выравнивает стек на 2 байта.

Параметры:

  1. Указатель на строку с именем каталога\папки, завершающуюся нулём 0.

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

  • Если CF = 0: AX Каталог\папка успешно создан(а).
  • Если CF = 1: AX содержит код ошибки.

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

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

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

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

  1. title Автор: Довгополов Евгений Сергеевич
  2. .286C
  3. .model small
  4. .stack 100h
  5. data segment public
  6. ____fName____db "Assembly", 0
  7. ____cSuccess db "Папка была успешно создана!\0"
  8. ____cError___db "Произошла ошибка при создании '%s'. Код ошибки: %d\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. ________pushs___ds:[fName]____________; Ложим на вершину стека адрес переменной fName
  17. ________call____CreateFolderEx________; Вызываем процедуру CreateFolderEx(fName) := AX и CF
  18. ________jnc_____@NoCreateFolderError__; Если CF=0, то прыгаем на метку @NoCreateFolderError
  19. ________push____ax____________________; 3-й: Ложим на вершину стека ax (код ошибки)
  20. ________pushs___ds:[fName]____________; 2-й: Ложим на вершину стека адрес переменной fName
  21. ________leaax___ds:[cError]___________; 1-й: Загружаем адрес строки формата cError в регистр ds:ax
  22. ________call____PrintFormatString_____; Вызываем процедуру PrintFormatString(ax:cError, fName, ax)
  23. ________add_____sp, 4_________________; Выравниваем стек
  24. ________jmp_____@Done_________________; Выполняем безусловный переход на метку @Done
  25. ____@NoCreateFolderError:
  26. ________leaax___ds:[cSuccess]_________; Загружаем адрес строки формата cSuccess в регистр ds:ax
  27. ________call____WriteStringEx_________; Вызываем процедуру WriteStringEx(cSuccess)
  28. ____@Done:
  29. ________push____0_____________________; Ложим на вершину стека байтовое значение кода возврата
  30. ________call____ExitProcessEx_________; Вызываем процедуру ExitProcess(0)
  31. ____main endp
  32. code ends
  33. end main
Made on
Tilda