ХАНДЫФАР

Функция DeleteFile удаляет файл с указанным именем.

Параметры:

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

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

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

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

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

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

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

  1. title Автор: Довгополов Евгений Сергеевич
  2. .model small
  3. .stack 100h
  4. data segment public
  5. ____fName____db "test.txt", 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____DeleteFile
  19. ________jnc_____NoDeleteFileError
  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. ____NoDeleteFileError:
  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
Функция DeleteFile удаляет файл с указанным именем.

Параметры:

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

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

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

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

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

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

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

  1. title Автор: Довгополов Евгений Сергеевич
  2. .model small
  3. .stack 100h
  4. data segment public
  5. ____fName____db "test.txt", 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____DeleteFile_________; Вызываем процедуру DeleteFile(ax:fName) := AX и CF
  16. ________jnc_____NoDeleteFileError__; Если CF=0, то прыгаем на метку NoDeleteFileError
  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. ____NoDeleteFileError:
  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