Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скляров И. Изучаем Assembler за 7 дней (2010).pdf
Скачиваний:
1335
Добавлен:
23.02.2015
Размер:
2.11 Mб
Скачать

http://www.sklyaroff.ru

128

000 – только чтение

001 – только запись

010 – чтение-запись 100 –только для чтения, не изменять время последнего обращения к файлу

биты 4-6: режим совместного использования (см. функцию 3Dh)

бит 7: наследование: 0 – дочерний процесс наследует дескриптор; 1 - дочерний процесс не наследует дескриптор.

биты 8: данные не буферизуются

бит 9: не архивировать файл, если используется архивирование файловой системы

(Doublespace)

бит 10: использовать число в DI для записи в конце короткого имени файла биты 11-12: зарезервированы (0)

бит 13: не вызывать прерывание 24h при критических ошибках бит 14: сбрасывать буфера на диск после каждой записи в файл

CX = атрибуты файла (можно комбинировать биты): такие же как в функции 3Ch

DX = действие

биты 0-3: действие, если файл существует: 0000 – не выполняется, 0001 – открытие файла, 0010 – замена файла.

биты 4-7: действие, если файл не существует: 0000 – не выполняется 0001 – создание файла

биты 8-15: зарезервированы

DX:SI = адрес ASCIIZ-строки с полным именем файла (строка ASCII-символов, оканчивающаяся нулем)

DI = число, которое будет записано в конце короткого варианта имени файла

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

CF=0

AX=дескриптор файла

CX=1, если файл открыт

CX=2, если файл создан

CX=3, если файл заменен

CF=1, если произошла ошибка

AX=код ошибки (7100h, если функция не поддерживается)

6.4.2. Чтение и запись в файл

3Fh (INT 21h) — чтение из файла или устройства

Входные данные:

AH=3Fh

BX=дескриптор

CX = число байтов

DS:DX = адрес буфера для приема данных

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

CF=0 и AX=число считанных байтов, если не было ошибки

CF=1 и AX=05h, если доступ запрещен

http://www.sklyaroff.ru

129

CF=1 и AX=06h, если неправильный идентификатор

42h (INT 21h) — установить указатель чтения/записи

Входные данные:

AH=42h

BX=дескриптор

CX:DX = смещение, на которое нужно переместить указатель (со знаком)

AL=перемещение:

0 – от начала файла

1 – от текущей позиции

2 – от конца файла

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

CF=0 и CX:DX=новое смещение указателя (в байтах от начала файла), если не произошла ошибка

CF=1 и AX=06h, если неправильный идентификатор

Примечание. Данная функция используется также для определения длины файла – достаточно вызвать ее с CX=0, DX=0, AL=2, и в CX:DX будет возвращена длина файла в байтах.

40h (INT 21h) — записать в файл или на устройство

Входные данные:

AH=40h

BX=дескриптор

CX=число байтов

DS:DX = адрес буфера с данными

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

CF=0 и AX=число записанных байтов, если не произошла ошибка

CF=1 и AX=05h, если доступ запрещен

CF=1 и AX=06h, если неправильный дескриптор

Примечание.Если при вызове функции CX=0, то файл усекается или расширяется до текущего положения указателя файла.

68h (INT 21h) — сброс файловых буферов MS-DOS на диск

Принудительно переносит все данные из внутренних буферов системы MS-DOS, связанных с заданным дескриптором, на устройство.

Входные данные:

AH=68h

BX=дескриптор

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

CF=0, если функция успешно выполнена

CF=1, если произошла ошибка (AX=код ошибки)

0Dh (INT 21h) — сброс всех файловых буферов на диск

Сбрасывает все файловые буферы. Все данные, записанные пользовательскими программами и временно буферизированные в MS-DOS, записываются физически на диск.

Входные данные:

AH=0Dh

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