Таблица Б-3. Значения ID
Описание.
Возвращает информацию о размере и типе текущего диска. Размер диска (в байтах) равен DX*AL*CX. Свободную память можно найти функциями 36h или 32h.
Версии: DOS 1.x держит FAT в памяти и возвращает DS:BX => FAT. DOS 2.0+ может держать в памяти лишь часть всей FAT.
Примечание.
Эта функция изменяет содержимое регистра DS.
DOS, функция 1Ch Получить информацию FAT для указанного диска
Вход:
AH=1Ch
DL – номер диска (0 – текущий, 1 – A и так далее)
Выход:
DS:BX – адрес байта FAT ID, отражающего тип диска (приведен в описании функции 1Bh)
DX – всего кластеров (единиц распределения)
AL – секторов на кластер
CX – байт на сектор
Описание.
Аналогична функции 1Bh с той разницей, что регистр DL указывает диск, для которого нужно получить информацию.
DOS, функция 21h Считать произвольную запись файла
Вход:
AH=21h
DS:DX – адрес открытого FCB (Таблица Б-2)
Выход:
AL=00h, если чтение было успешным и DTA заполнена данными
AL=01h, если достигнут конец файла (EOF) и чтения не было
AL=02h, если произошел выход за сегмент (чтения нет)
AL=03h, если встречен EOF и усеченная запись дополнена нулями
Описание.
Данная функция читает из файла с текущей позиции как с указанной в полях FCB «Запись с текущей позиции» и «Номер записи при непосредственном доступе к файлу».
DOS, функция 22h Писать произвольную запись файла
Вход:
AH=22h
DS:DX – адрес открытого FCB (Таблица Б-2)
Выход:
AL=00h, если запись была успешной
AL=01h, при переполнении диска
AL=02h, если DTA+FCB выходит за сегмент (нет записи)
Описание.
Данная функция записывает в файл с текущей позиции как с указанной в полях FCB «Запись с текущей позиции» и «Номер записи при непосредственном доступе к файлу».
DOS, функция 23h Получить размер файла через FCB
Вход:
AH=23h
DS:DX – адрес неоткрытого FCB (Таблица Б-2)
Выход:
AL=00h, если функция выполнена успешно
AL=FFh, если при выполнении функции возникли ошибки
Описание.
Проще определить размер файла при помощи функции 3Dh с последующим выполнением 42h (при AL=2).
DOS, функция 24h Установить адрес произвольной записи в файле
Вход:
AH=24h
DS:DX – адрес открытого FCB (Таблица Б-2)
Описание.
Устанавливает поле «Номер записи при непосредственном доступе к файлу» в FCB на файловый адрес, соответствующий значениям полей «Текущий блок» и «Запись с текущей позиции».
DOS, функция 25h Установить вектор прерывания
Вход:
AH=25h
AL – номер прерывания
DS:DX – вектор прерывания – адрес программы обработки прерывания
Описание. Устанавливает значение элемента таблицы векторов прерываний для прерывания с номером AL, равным DS:DX. Это равносильно записи 4-байтового адреса в 0000:(AL*4), но, в отличие от прямой записи, DOS знает, что происходит, и гарантирует, что в момент записи прерывания будут заблокированы.
Примечание.
Восстановить DS (если необходимо) после этого вызова.
DOS, функция 26h Создать новый PSP
Вход:
AH=26h
DX – адрес сегмента (параграфа) для нового PSP
CS – сегмент PSP, используемый как шаблон для нового PSP (Таблица Б-4)
Описание. Устанавливает PSP для порождаемого процесса по адресу DX:0000. Текущий PSP (100h байт, начиная с CS:0) копируется в DX:0000h, поле MemTop соответственно корректируется, векторы Terminate, Ctrl-Break и Critical Error копируются в PSP из векторов прерываний INT 22h, INT 23h и INT 24h. После этого можно загрузить программу с диска и передать ей управление посредством FAR JMP.
Примечание.
Если перехватывается INT 21h, нужно позаботиться о помещении в стек корректного CS: IP. Еще лучше использовать функцию 4Ch.
Таблица Б-4. Формат PSP DOS, функция 27h Читать произвольный блок файла
Вход: AH=27h
DS:DX – адрес открытого FCB (Таблица Б-2)
CX – число считываемых записей
Выход: AL=00h, если чтение успешно и DTA заполнена данными AL=01h если достигнут конец файла (EOF) и данные не считаны AL=02h, если при чтении произошел выход за границу сегмента AL=03h, если EOF и считана усеченная порция (дополнена нулями) CX – действительное число считанных записей
Описание.
Читает несколько записей из файла, начиная с файлового адреса, указанного полем «Номер записи при непосредственном доступе к файлу» в FCB. Помещает данные в память, начиная с адреса DTA. Соответствующие поля FCB корректируются, чтобы указывать на следующую запись (первую за прочитанными).
DOS, функция 28h Писать произвольный блок файла
Вход:
Читать дальше
Конец ознакомительного отрывка
Купить книгу