Функция 3FH. Функция 40H. Функция 3EH. Buf DB 512 DUP (?) ; буфер для чтения. MOV DX, OFFSET FileName ; ASCIIZ-строка
Функция 3FH Назначение: чтение данных из открытого файла. Для выполнения функции в регистр BX необходимо поместить файловый номер, в регистр CX – число байт, которое необходимо прочитать, а в регистровую пару DS: DX – адрес области памяти, куда будут прочитаны данные. Перед чтением файл должен быть открыт функцией 3DH. При успешном выполнении функции в регистр AX заносится число реально прочитанных байт. Если число реально прочитанных байт меньше, чем было задано, то это означает, что достигнут конец файла. Так как DOS ограничивает число одновременно открытых файлов (параметр FILES в CONFIG. SYS), то программа, успешно обработавшая какой-либо файл, должна закрыть его. Пример использования функции 3FH: Buf DB 512 DUP (? ) ; буфер для чтения Handle DW? ; файловый номер . . . MOV AH, 3FH MOV BX, Handle MOV CX, 512 ; чтение 512 байт MOV DX, OFFSET Buf ; настройка DX на буфер Buf INT 21H JC Error CMP AX, 512 JNE EndOfFile . . . ; функция выполнилась успешно Error: . . . ; возникла ошибка EndOfFile: . . . ; достигнут конец файла В случае ошибки в регистре AX устанавливается код 05H (нет доступа) или 06H (неправильный файловый номер).
Функция 40H Назначение: запись данных в открытый файл. Для выполнения функции в регистр BX необходимо поместить файловый номер, в регистр CX – число байт, которое необходимо записать, а в регистровую пару DS: DX – адрес области памяти, откуда будут записаны данные. Перед записью файл должен быть открыт для записи или создан функцией 3CH. При успешном выполнении функции в регистр AX заносится число реально записанных байт. Если число реально записанных байт меньше, чем было задано, то это означает, что диск переполнен.
Пример использования функции 40H: Buf DB 512 DUP (? ); буфер для записи Handle DW? ; файловый номер . . . MOV AH, 40H MOV BX, Handle MOV CX, 512 ; запись 512 байт MOV DX, OFFSET Buf ; настройка DX на буфер Buf INT 21H JC Error CMP AX, 512 JNE DiskFull . . . ; функция выполнилась успешно Error: . . . ; возникла ошибка DiskFull: . . . ; диск переполнен В случае ошибки в регистре AX устанавливается код 05H (нет доступа) или 06H (неправильный файловый номер).
Функция 3EH Назначение: закрытие ранее открытого файла. Функция закрывает файл, открытый для чтения или для записи. Если закрывается файл, открытый для записи, функция 3EH записывает оставшиеся данные из файлового буфера на диск, корректирует оглавление и таблицу FAT. Для выполнения функции в регистр BX необходимо занести файловый номер. Пример использования функции 3EH: Handle DW? ; файловый номер . . . MOV AH, 3EH MOV BX, Handle INT 21H
В случае ошибки в регистре AX устанавливается код 06H (неправильный файловый номер).
Функция 41H Назначение: удаление указанного файла. Для выполнения функции в регистровой паре DS: DX необходимо указать адрес ASCIIZ-строки, содержащей имя файла. Функцией 41H нельзя удалить файл с атрибутом «только для чтения». Пример использования функции 41H: FileName DB ‘c: \docs\my. txt’, 0; имя файла . . . MOV AH, 41H MOV DX, OFFSET FileName ; ASCIIZ-строка INT 21H
В случае ошибки в регистре AX устанавливается код 02H (файл не найден) или 05H (нет доступа).
Функция 42H Назначение: управление файловым указателем. Файловый указатель – это 32-битное число, которое определяет текущую позицию чтения/записи для файла. При открытии файла значение файлового указателя устанавливается в 0 и увеличивается при последующих операциях чтения/записи (последовательный доступ к файлу). Для получения прямого доступа к записям файла можно изменять значение файлового указателя при помощи функции 42H.
Для установки файлового указателя необходимо поместить в регистр BX файловый номер, а в регистровую пару CX: DX – требуемое значение файлового указателя (смещение). В регистре DX устанавливаются младшие 16 бит смещения, а в регистре CX – старшие 16 бит. В регистре AL должен быть установлен один из кодов, которые определяют точку отсчета смещения: 0 – смещение от начала файла; 1 – смещение от текущего значения файлового указателя, которое может быть в любом месте, включая начало файла; 2 – смещение от конца файла. Пример использования функции 42H: Handle DW? ; файловый номер . . . MOV AH, 42H MOV AL, 0 MOV BX, Handle MOV CX, 0010H; смещение 1052672 от начала файла MOV DX, 1000H INT 21H JC Error . . . ; функция выполнилась успешно Error: . . . ; возникла ошибка В случае ошибки в регистре AX устанавливается код 01H (ошибка кода отсчета) или 06H (неверный файловый номер).
Функция 43H Назначение: проверка или изменение атрибута файла. Эта функция позволяет получить атрибут файла или изменить его. Для получения атрибута регистр AL должен содержать 0. Для изменения атрибута регистр AL должен содержать 1, а регистр CX – новое значение атрибута (табл. 12). Если регистр AL содержит 0, то после выполнения функции в регистр CX будет помещен атрибут файла. Регистровая пара DS: DX содержит адрес ASCIIZ-строки с именем файла. Пример использования функции 43H: FileName DB ‘c: \docs\my. txt’, 0; имя файла . . . MOV AH, 43H MOV AL, 01H ; установка
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|