ХАНДЫФАР

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

Параметры:

  • AX: Указатель на строку с именем каталога\папки, который нужно удалить.

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

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

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

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

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

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

  1. title Автор: Довгополов Евгений Сергеевич
  2. .model small
  3. .stack 100h
  4. data segment public
  5. ____fName____db "Assembly", 0
  6. ____dSuccess db "Папка была успешно "
  7. _____________db "удалена!\0"
  8. ____dError___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____DeleteFolder
  19. ________jnc_____NoDeleteFolderError
  20. ________push____ax
  21. ________lea_____ax, ds:[fName]
  22. ________push____ax
  23. ________lea_____ax, ds:[dError]
  24. ________call____PrintFormatString
  25. ________add_____sp, 4
  26. ________jmp_____Done
  27. ____NoDeleteFolderError:
  28. ________lea_____ax, ds:[dSuccess]
  29. ________call____WriteString
  30. ____Done:
  31. ________xor_____al, al
  32. ________call____ExitProcess
  33. ____main endp
  34. code ends
  35. end main
Функция DeleteFolder удаляет каталог\папку с указанным именем.

Параметры:

  • AX: Указатель на строку с именем каталога\папки, который нужно удалить.

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

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

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

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

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

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

  1. title Автор: Довгополов Евгений Сергеевич
  2. .model small
  3. .stack 100h
  4. data segment public
  5. ____fName____db "Assembly", 0
  6. ____dSuccess db "Папка была успешно удалена!\0"
  7. ____dError___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____DeleteFolder_________; Вызываем процедуру DeleteFolder(ax:fName) := AX и CF
  16. ________jnc_____NoDeleteFolderError__; Если CF=0, то прыгаем на метку NoDeleteFolderError
  17. ________push____ax___________________; 3-й: Сохраняем значение регистра ax в стеке
  18. ________lea_____ax, ds:[fName]_______; Загружаем адрес переменной fName в регистр ds:ax
  19. ________push____ax___________________; 2-й: Сохраняем значение регистра ax в стеке
  20. ________lea_____ax, ds:[dError]______; 1-й: Загружаем адрес строки формата dError в регистр ds:ax
  21. ________call____PrintFormatString____; Вызываем процедуру PrintFormatString(ax:dError, fName)
  22. ________add_____sp, 4________________; Выравниваем стек
  23. ________jmp_____Done_________________; Выполняем безусловный переход на метку Done
  24. ____NoDeleteFolderError:
  25. ________lea_____ax, ds:[dSuccess]____; Загружаем адрес строки dSuccess в регистр ds:ax
  26. ________call____WriteString__________; Вызываем процедуру WriteString(ax:dSuccess)
  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