ХАНДЫФАР

Функция RenameFolderEx переименовывает каталог\папку. Функция RenameFolderEx автоматически выравнивает стек на 4 байта.

Параметры:

  1. Указатель на строку с текущим именем каталога\папки.
  2. Указатель на строку с новым именем каталога\папки.

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

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

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

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

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

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

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

Параметры:

  1. Указатель на строку с текущим именем каталога\папки.
  2. Указатель на строку с новым именем каталога\папки.

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

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

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

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

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

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

  1. title Автор: Довгополов Евгений Сергеевич
  2. .286C
  3. .model small
  4. .stack 100h
  5. data segment public
  6. ____fOldName db "Assembly", 0
  7. ____fNewName db "Handyfar", 0
  8. ____rSuccess db "Папка была успешно переименована в '%s'.\0"
  9. ____rError___db "Произошла ошибка при переименовании '%s' в '%s'. Код ошибки: %d\0"
  10. data ends
  11. code segment public
  12. ____assume _ds:data, cs:code
  13. ____include Handyfar.inc______________; Подключаем файл с функциями
  14. ____include Handymac.inc______________; Подключаем файл с макросами
  15. ____main proc
  16. ________call____SetDataSegment________; Вызываем процедуру SetDataSegment
  17. ________pushs___es:[fNewName]_________; 2-й: Ложим на вершину стека адрес переменной fNewName
  18. ________pushs___ds:[fOldName]_________; 1-й: Ложим на вершину стека адрес переменной fOldName
  19. ________call____RenameFolderEx________; Вызываем процедуру RenameFolderEx(fOldName, fNewName) := AX и CF
  20. ________jnc_____@NoRenameFolderError__; Если CF=0, то прыгаем на метку @NoRenameFolderError
  21. ________push____ax____________________; 4-й: Ложим на вершину стека ax (код ошибки)
  22. ________pushs___ds:[fNewName]_________; 3-й: Ложим на вершину стека адрес переменной fNewName
  23. ________pushs___ds:[fOldName]_________; 2-й: Ложим на вершину стека адрес переменной fOldName
  24. ________leaax___ds:[rError]___________; 1-й: Загружаем адрес строки формата rError в регистр ds:ax
  25. ________call____PrintFormatString_____; Вызываем процедуру PrintFormatString(ax:rError, ...)
  26. ________add_____sp, 6_________________; Выравниваем стек
  27. ________jmp_____@Done_________________; Выполняем безусловный переход на метку @Done
  28. ____@NoRenameFolderError:
  29. ________pushs___ds:[fNewName]_________; 2-й: Ложим на вершину стека адрес переменной fNewName
  30. ________leaax___ds:[rSuccess]_________; 1-й: Загружаем адрес строки формата rSuccess в регистр ds:ax
  31. ________call____PrintFormatString_____; Вызываем процедуру PrintFormatString(ax:rSuccess, fNewName)
  32. ________add_____sp, 2_________________; Выравниваем стек
  33. ____@Done:
  34. ________push____0_____________________; Ложим на вершину стека байтовое значение кода возврата
  35. ________call____ExitProcessEx_________; Вызываем процедуру ExitProcess(0)
  36. ____main endp
  37. code ends
  38. end main
Made on
Tilda