ХАНДЫФАР

Функция CreateFolder создаёт каталог\папку с указанным именем.

Параметры:

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

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

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

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

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

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

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

  1. title Автор: Довгополов Евгений Сергеевич
  2. .model small
  3. .stack 100h
  4. data segment public
  5. ____fName____db "Assembly", 0
  6. ____cSuccess_db "Папка была успешно "
  7. _____________db "создана!\0"
  8. ____cError___db "Произошла ошибка при "
  9. _____________db "создании '%s'. Код "
  10. _____________db "ошибки: %d\0"
  11. data ends
  12. code segment public
  13. ____assume _ds:data, cs:code
  14. ____include Handyfar.inc
  15. ____main proc
  16. ________call____SetDataSegment
  17. ________lea_____ax, ds:[fName]
  18. ________call————CreateFolder
  19. ________jnc—————NoCreateFolderError
  20. ________push————ax
  21. ________lea_____ax, ds:[fName]
  22. ________push————ax
  23. ________lea_____ax, ds:[cError]
  24. ________call————PrintFormatString
  25. ________add—————sp, 4
  26. ________jmp—————Done
  27. ————NoCreateFolderError:
  28. ________lea_____ax, ds:[cSuccess]
  29. ________call————WriteString
  30. ————Done:
  31. ________xor_____al, al
  32. ________call____ExitProcess
  33. ____main endp
  34. code ends
  35. end main
Функция CreateFolder создаёт каталог\папку с указанным именем.

Параметры:

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

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

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

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

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

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

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

  1. title Автор: Довгополов Евгений Сергеевич
  2. .model small
  3. .stack 100h
  4. data segment public
  5. ____fName____db "Assembly", 0
  6. ____cSuccess_db "Папка была успешно создана!\0"
  7. ____cError___db "Произошла ошибка при создании '%s'. Код ошибки: %d\0"
  8. data ends
  9. code segment public _________________; Начало сегмента кода
  10. ____assume _ds:data, cs:code
  11. ____include Handyfar.inc_____________; Подключаем файл с функциями
  12. ____main proc _______________________; Начало процедуры main
  13. ________call____SetDataSegment_______; Вызываем процедуру SetDataSegment
  14. ________lea_____ax, ds:[fName]_______; Загружаем адрес строки fName в регистр ds:ax
  15. ________call————CreateFolder_________; Вызываем процедуру CreateFolder(ax:fName) := AX и CF
  16. ________jnc—————NoCreateFolderError__; Если CF=0, то прыгаем на метку NoCreateFolderError
  17. ________push————ax___________________; 3-й: Сохраняем значение регистра ax в стеке
  18. ________lea_____ax, ds:[fName]_______; Загружаем адрес переменной fName в регистр ds:ax
  19. ________push————ax___________________; 2-й: Сохраняем значение регистра ax в стеке
  20. ________lea_____ax, ds:[cError]______; 1-й: Загружаем строки формата cError в регистр ds:ax
  21. ________call————PrintFormatString____; Вызываем процедуру PrintFormatString(ax:cError, fName)
  22. ________add—————sp, 4________________; Выравниваем стек
  23. ________jmp—————Done_________________; Выполняем безусловный переход на метку Done
  24. ————NoCreateFolderError:
  25. ________lea_____ax, ds:[cSuccess]____; Загружаем адрес строки cSuccess в регистр ds:ax
  26. ________call————WriteString__________; Вызываем процедуру WriteString(ax:cSuccess)
  27. ————Done:
  28. ________xor_____al, al_______________; Обнуляем регистр al
  29. ________call____ExitProcess__________; Вызываем процедуру ExitProcess
  30. ____main endp _______________________; Конец процедуры main
  31. code ends ___________________________; Конец сегмента кода
  32. end main ____________________________; Конец файла. Точкой входа указывается процедура main
Made on
Tilda