Функция
RenameFile переименовывает файл.
Параметры:- DS:AX: Указатель на строку с текущим именем файла.
- ES:BX: Указатель на строку с новым именем файла.
Возвращаемое значение:- Если CF = 0: Файл успешно переименован.
- Если CF = 1: AX содержит код ошибки.
Состояние флагов:- Функция влияет на все флаги.
Особенности:- Функция не изменяет значения регистров, кроме AX и флагов.
- title Автор: Довгополов Евгений Сергеевич
- .model small
- .stack 100h
- data segment public
- ____fOldName db "test.txt", 0
- ____fNewName db "main.txt", 0
- ____rSuccess_db "Файл был успешно "
- _____________db "переименован в '%s'.\0"
- ____rError___db "Произошла ошибка при "
- _____________db "переименовании '%s' в "
- _____________db "'%s'. Код ошибки: %d\0"
- data ends
- code segment public
- ____assume _ds:data, cs:code
- ____include Handyfar.inc
- ____main proc
- ________call____SetDataSegment
- ________lea_____bx, es:[fNewName]
- ________lea_____ax, ds:[fOldName]
- ________call____RenameFile
- ________jnc_____NoRenameFileError
- ________push____ax
- ________lea_____ax, ds:[fNewName]
- ________push____ax
- ________lea_____ax, ds:[fOldName]
- ________push____ax
- ________lea_____ax, ds:[rError]
- ________call____PrintFormatString
- ________add_____sp, 6
- ________jmp_____Done
- ____NoRenameFileError:
- ________lea_____ax, ds:[fNewName]
- ________push____ax
- ________lea_____ax, ds:[rSuccess]
- ________call____PrintFormatString
- ________add_____sp, 2
- ____Done:
- ________xor_____al, al
- ________call____ExitProcess
- ____main endp
- code ends
- end main
Функция
RenameFile переименовывает файл.
Параметры:- DS:AX: Указатель на строку с текущим именем файла.
- ES:BX: Указатель на строку с новым именем файла.
Возвращаемое значение:- Если CF = 0: Файл успешно переименован.
- Если CF = 1: AX содержит код ошибки.
Состояние флагов:- Функция влияет на все флаги.
Особенности:- Функция не изменяет значения регистров, кроме AX и флагов.
- title Автор: Довгополов Евгений Сергеевич
- .model small
- .stack 100h
- data segment public
- ____fOldName db "test.txt", 0
- ____fNewName db "main.txt", 0
- ____rSuccess db "Файл был успешно переименован в '%s'.\0"
- ____rError___db "Произошла ошибка при переименовании '%s' в '%s'. Код ошибки: %d\0"
- data ends
- code segment public _______________; Начало сегмента кода
- ____assume _ds:data, cs:code
- ____include Handyfar.inc___________; Подключаем файл с функциями
- ____main proc _____________________; Начало процедуры main
- ________call____SetDataSegment_____; Вызываем процедуру SetDataSegment
- ________lea_____bx, es:[fNewName]__; 2-й: Загружаем адрес строки fNewName в регистр es:bx
- ________lea_____ax, ds:[fOldName]__; 1-й: Загружаем адрес строки fOldName в регистр ds:ax
- ________call____RenameFile_________; Вызываем процедуру RenameFile(ds:ax, es:bx) := AX и CF
- ________jnc_____NoRenameFileError__; Если CF=0, то прыгаем на метку NoRenameFileError
- ________push____ax_________________; 4-й: Сохраняем значение регистра ax(код ошибки) в стеке
- ________lea_____ax, ds:[fNewName]__; Загружаем адрес переменной fNewName в регистр ds:ax
- ________push____ax_________________; 3-й: Сохраняем значение регистра ax в стеке
- ________lea_____ax, ds:[fOldName]__; Загружаем адрес переменной fOldName в регистр ds:ax
- ________push____ax_________________; 2-й: Сохраняем значение регистра ax в стеке
- ________lea_____ax, ds:[rError]____; 1-й: Загружаем строки формата rError в регистр ds:ax
- ________call____PrintFormatString__; Вызываем процедуру PrintFormatString(ax:rError, ...)
- ________add_____sp, 6______________; Выравниваем стек
- ________jmp_____Done_______________; Выполняем безусловный переход на метку Done
- ____NoRenameFileError:
- ________lea_____ax, ds:[fNewName]__; Загружаем адрес переменной fNewName в регистр ds:ax
- ________push____ax_________________; 2-й: Сохраняем значение регистра ax в стеке
- ________lea_____ax, ds:[rSuccess]__; 1-й: Загружаем адрес строки формата rSuccess в регистр ds:ax
- ________call____PrintFormatString__; Вызываем процедуру PrintFormatString(ax:rSuccess, fNewName)
- ________add_____sp, 2______________; Выравниваем стек
- ____Done:
- ________xor_____al, al_____________; Обнуляем регистр al
- ________call____ExitProcess________; Вызываем процедуру ExitProcess
- ____main endp _____________________; Конец процедуры main
- code ends _________________________; Конец сегмента кода
- end main __________________________; Конец файла. Точкой входа указывается процедура main