Выход:
AL=00h, если функция выполнена успешно FCB заполнен
AL=FFh, если при выполнении функции возникли ошибки
Описание. Файл, специфицированный неоткрытым FCB, создается на диске, указанном в FCB (0 – текущий, 1 – A и так далее). Он открывается в текущем оглавлении этого диска. FCB заполняется аналогично функции 0Fh. Если файл существует в момент вызова, его элемент оглавления перекрывается новым файлом, а длина файла сбрасывается в ноль.
Примечание.
Handle-ориентированные функции DOS 2.0+ гораздо удобнее в работе.
DOS, функция 17h Переименовать файл через FCB
Вход:
AH=17h
DS:DX – адрес измененного FCB (Таблица Б-2)
Выход:
AL=00h, если функция выполнена успешно
AL=FFh, если при выполнении функции возникли ошибки
Описание.
Переименовывает файл в текущем оглавлении.
DOS, функция 19h Получить текущий диск DOS
Вход:
AH=19h
Выход: AL – номер текущего диска (0 – A, 1 – B, и так далее)
Описание.
Возвращает номер дисковода текущего диска DOS.
DOS, функция 1Ah Установить адрес DTA
Вход:
AH=1Ah
DS:DX – адрес DTA
Описание.
Устанавливает адрес DTA. Все FCB-ориентированные операции работают с DTA. DOS не позволяет операциям ввода/вывода пересекать границу сегмента. Функции поиска 11h, 12h, 4Eh и 4Fh помещают данные в DTA. DTA глобальна, поэтому надо проявлять осторожность при назначении ее в рекурсивной процедуре. При запуске программы ее DTA устанавливается по смещению 80h относительно PSP.
DOS, функция 1Bh Получить информацию FAT для текущего диска
Вход:
AH=1Bh
Выход:
DS:BX – адрес байта FAT ID, отражающего тип диска (Таблица Б-3)
DX – всего кластеров (единиц распределения) на диске
AL – секторов на кластер
CX – байт на сектор
Таблица Б-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 Писать произвольный блок файла
Вход:
AH=28h
DS:DX – адрес открытого FCB (Таблица Б-2)
CX – число записываемых блоков (если CX равен нулю, то размер файла усекается до указанного в поле FCB "Номер записи при непосредственном доступе к файлу")
Выход:
AL=00h, если запись успешна
AL=01h, при переполнении диска
AL=02h, если при записи произошел выход за границу сегмента
CX – действительное число сделанных записей
Описание. Записывает несколько блоков в файл, начиная с файлового адреса, указанного полем "Номер записи при непосредственном доступе к файлу" в FCB. Читает данные из памяти, начиная с адреса DTA. Соответствующие поля FCB корректируются, чтобы указывать на следующую запись (первую за прочитанными).
DOS, функция 29h Разобрать имя файла
Вход:
AH=29h
DS:SI – адрес исходной текстовой строки для разбора
ES:DI – адрес буфера для результирующего неоткрытого FCB (Таблица Б-2)
AL – битовые флаги, указывающие опции разбора (Таблица Б-5).
Выход:
AL=00h, если результирующий FCB не содержит обобщенных символов
AL=01h, если результирующий FCB содержит обобщенные символы
AL=FFh, если неверно обозначение диска в имени файла
DS:SI – изменен – указывает на символ сразу вслед за именем файла
ES:DI – не изменен – указывает на неоткрытый FCB
Описание.
Создает неоткрытый FCB из строки текста или параметра команды. Текст, начиная с DS:SI, анализируется как имя файла в формате D: FILENAME.EXT, и буфер по адресу ES:DI заполняется как соответственно форматированный FCB.
Таблица Б-5. Битовые флаги

DOS, функция 2Ah Получить системную дату
Вход:
AH=2Ah
Выход:
AL – день недели (0 – воскресенье, 1 – понедельник, … 6 – суббота), DOS 3.0+
CX – год (от 1980 до 2099)
DH – месяц (1 до 12)
DL – день (1 до 31)
Описание. Возвращает текущую дату, которая известна системе.