Функция
ReadFileEx считывает данные из файла. Функция
ReadFileEx автоматически выравнивает стек на 6 байт.
Параметры:- Указатель на буфер, завершающиюся нулём 0, в который будут записаны считанные данные.
- Дескриптор файла, полученный после вызова функций CreateFile/Ex или OpenFile/Ex.
- Количество байт для считывания.
Возвращаемое значение:- Если CF = 0: AX содержит количество успешно считанных байт.
- Если CF = 1: AX содержит код ошибки.
Состояние флагов:- Функция влияет на все флаги.
Особенности:- Функция считывает данные из файла, используя указанный дескриптор файла.
- Функция не изменяет значения регистров, кроме AX и флагов.
- title Автор: Довгополов Евгений Сергеевич
- .286C
- .model small
- .stack 100h
- data segment public
- ____strout _db "Введите имя файла: \0"
- ____fName __db 13 dup(0)
- ____fBuffer db 255 dup(0)
- ____oError _db "Произошла ошибка при "
- ____________db "открытии '%s'. Код "
- ____________db "ошибки: %d\0"
- ____rError__db "Произошла ошибка при "
- ____________db "чтении из '%s'. Код "
- ____________db "ошибки: %d\0"
- data ends
- code segment public
- ____assume _ds:data, cs:code
- ____include Handyfar.inc
- ____include Handymac.inc
- ____main proc
- ________call____SetDataSegment
- ________pushs___ds:[strout]
- ________call____WriteStringEx
- ________pushs___ds:[fName]
- ________call____ReadStringEx
- ________push____READ_WRITE
- ________pushs___ds:[fName]
- ________call____OpenFileEx
- ________jnc ____@NoOpenFileError
- ________push____ax
- ________pushs___ds:[fName]
- ________leaax___ds:[oError]
- ________call____PrintFormatString
- ________add_____sp, 4
- ________jmp_____@Done
- ____@NoOpenFileError:
- ________push____0FFh
- ________push____ax
- ________pushs___ds:[fBuffer]
- ________call____ReadFileEx
- ________jnc_____@NoReadFileError
- ________push____ax
- ________pushs___ds:[fName]
- ________leaax___ds:[rError]
- ________call____PrintFormatString
- ________add_____sp, 4
- ________jmp_____@Done
- ____@NoReadFileError:
- ________pushs___ds:[fBuffer]
- ________call____WriteStringEx
- ____@Done:
- ________push____0
- ________call____ExitProcessEx
- ____main endp
- code ends
- end main