Приложение Б
Функции DOS (INT 21 h)

DOS, функция OOh
Завершить программу

Вход:

AH=OOh
CS - сегмент PSP завершающегося процесса

Описание.

Передает управление на вектор завершения в PSP (выходит в родитель-
ский процесс). Идентична функции INT 20h (Terminate). Регистр CS
должен указывать на PSP. Восстанавливает векторы прерываний DOS
22h-24h (Завершение, Ctrl-Break и Критическая ошибка), устанавливая
значения, сохраненные в родительском PSP. Выполняет сброс файло-
вых буферов. Файлы должны быть предварительно закрыты, если их
длина изменилась.

Примечание.

Данная функция не рекомендуется к использованию. Для выхода

из программы лучше использовать функцию DOS 4Ch.

DOS, функция 01h
Считать со стандартного устройства ввода

Вход:

AH°01h

Выход:

AL - символ, полученный из стандартного ввода

Описание.

Считывает (ожидает) символ со стандартного входного устройства.
Отображает этот символ на стандартное выходное устройство (эхо).
При обнаружении Ctrl-Break выполняется INT 23h.

Примечание.

Ввод расширенных клавиш ASCII (F1-F12, PgUp, курсор и другие) тре-
бует двух обращений к этой функции. Первый вызов возвращает AL=0.
Второй вызов возвращает в AL расширенный код ASCII.


DOS, функция 02h
Записать в стандартное устройство вывода

Вход:

AH=02h
DL - символ, выводимый в стандартный вывод

Описание.

Посылает символ из DL в стандартное устройство вывода. Обрабатыва-
ет символ Backspace (ASCII 8), перемещая курсор влево на одну пози-
цию и оставляя его в новой позиции. При обнаружении Ctrl-Break вы-
полняется INT 23h.

DOS, функция 03h

Считать символа со стандартного вспомогательного

устройства

Вход:

AH=03h

Выход:

AL - символ, введенный со стандартного вспомогательного устройства

Описание.

Считывает (ожидает) символ со стандартного вспомогательного устрой-
ства, СОМ1 или AUX и возвращает этот символ в AL.

Примечание.

Ввод не буферизуется и должен опрашиваться (не управляется преры-
ваниями). При запуске DOS порт AUX (COM1) инициализируется так:

2400 бод, без проверки на четность, 1 стоп-бит, 8-битные слова. Коман-
да DOS MODE используется для установки иных характеристик.

DOS, функция 04h
Записать символ в стандартное вспомогательное устройство

Вход:

AH^h
DL - символ, выводимый в стандартное вспомогательное устройство

Описание.

Посылает символ, находящийся в регистре DL, на стандартное вспомо-
гательное устройство, COM1 или AUX.


DOS, функция 05h
Вывести на принтер

Вход:

АН-ОЗЬ
DL - символ, записываемый на стандартный принтер

Описание.

Посылает символ в DL на стандартное устройство печати, обычно

LPT1.

DOS, функция 06h
Консольный ввод-вывод

Вход:

AH=06h

DL=OOh-FEh - символ, посылаемый на стандартный вывод

DL=FFh - запрос ввода со стандартного ввода

Выход:

ZF=0, если осуществлялся ввод символа и символ готов при запросе ввода

AL - считанный символ
ZF=1, если осуществлялся ввод символа и символа в консоли нет

Описание.

При DL°=OFFh выполняет ввод с консоли "Без ожидания", возвращая
включенный флаг нуля ZF, если на консоли нет готового символа. Если
символ готов, сбрасывает флаг ZF и возвращает считанный символ в AL.
Если DL не равен OFFh, то DL направляется на стандартный вывод.

DOS, функция 07h
Нефильтрующий консольный ввод без эха

Вход:

AH°07h

Выход:

AL - символ, полученный через стандартный ввод

Описание.

Считывает (ожидает) символ со стандартного входного устройства
и возвращает этот символ в AL. Не проверяет на Ctrl-Break, Backspace
и другие.

8- 1436


Примечание.

Для ввода расширенного символа ASCII должна быть вызвана дважды.
Для проверки статуса используется функция DOS OBh (чтобы не ожи-
дать нажатия клавиши).

DOS, функция 08h
Консольный ввод без эха

Вход:

AH=08h

Выход:

AL - символ, полученный через стандартный ввод

Описание.

Считывает (ожидает) символ со стандартного входного устройства
и возвращает этот символ в AL. При обнаружении Ctrl-Break выполня-
ется прерывание INT 23h.

Примечание.
Для ввода расширенного символа ASCII должна быть вызвана дважды.

DOS, функция 09h
Запись строки на стандартный вывод

Вход:

АН-09Н
DS:DX - адрес строки, заканчивающейся символом "$" (ASCII 24h)

Описание.

Строка, исключая завершающий ее символ "$", посылается на стандар-
тный вывод. Символы Backspace обрабатываются как в функции 02h
(вывод на дисплей). Чтобы перейти на новую строку, обычно включают
в текст пару CR/LF (ASCII ODh и ASCII OAh). Строки, содержащие
"$", можно передать на стандартное устройство вывода с помощью фун-
кции 40h (ВХ-0).

DOS, функция OAh
Ввод строки в буфер

Вход:

AH-OAh
DS:DX - адрес входного буфера (Таблица Б-1)


Таблица Б-1. Формат входного буфера.

Выход:

Буфер содержит введенные данные, в конце - символ CR (ASCII ODh)

DOS, функция OBh
Проверка статуса ввода

Вход:

AH-OBh

Выход:

AL=FFh, если символ доступен со стандартного ввода
AL=OOh, если нет доступного символа

Описание.

Проверяет состояние стандартного ввода. При распознавании Ctrl-Break

выполняется INT 23h.

Примечания.

Используется перед функциями Olh, 07h и 08h, чтобы избежать ожида-
ния нажатия клавиши.

Эта функция дает простой неразрушающий способ проверки Ctrl-Break
в процессе длинных вычислений или другой обработки, обычно не тре-
бующей ввода. Это позволяет снимать счет по нажатию Ctrl-Break.

DOS, функция OCh
Ввод с очисткой

Вход:

АН-ОСЬ

AL - номер функции ввода DOS:

AL=01h - ввод с клавиатуры
AL=06h - ввод с консоли
AL=°07h - нефильтрующий без эха


AL=08h - ввод без эха
AL=OAh - буферизованный ввод

Описание.

Очищает буфер опережающего ввода стандартного ввода, а затем вызы-
вает функцию ввода, указанную в AL. Это заставляет систему ожидать
ввод очередного символа.

DOS, функция ODh
Сброс диска

Вход:

AH=ODh

Описание.

Сбрасывает диск (записывает на диск все файловые буферы). Файл,
размер которого изменился, должен быть предварительно закрыт (при
помощи функций 10h или 3Eh).

DOS, функция OEh
Установить текущий диск DOS

Вход:

АН-ОЕЬ

DL - номер диска (0 - А, 1 - В и так далее), который становится теку-
щим

Выход:

AL - общее число дисководов в системе

Описание.

Диск, указанный в DL, становится текущим. Проверка: используется
функция 19h (дать текущий диск). В регистре AL возвращается число
дисководов всех типов, включая жесткие диски и "логические" диски
(как диск В: системе с одним гибким диском).

Примечание.

AL имеет то же значение, что и LASTDRIVE, указанное в файле

CONFIG.SYS, и по умолчанию равно 5.

DOS, функция OFh
Открыть файл через FCB

Вход:

AH-OFh
DS:DX - адрес неоткрытого FCB (Таблица Б-2)


Выход:

AL=OOh, если функция выполнена успешно (FCB заполнен)
AL=FFh, если файл не найден или доступ к файлу не разрешен

Описание.

Файл, описываемый неоткрытым FCB, должен существовать в текущем
оглавлении на диске, специфицированном в FCB (0 - текущий, 1 - А,
2 - В и так далее). Если файл не существует, возвращается AL=OFFh.
Файл открывается в режиме совместимости. Если поле "Номер диска"
в FCB равно нулю в момент вызова, то оно заполняется номером теку-
щего дисковода (1 -А,2-Ви так далее). Поле FCB "Номер текущего
блока" устанавливается в ноль. Поле FCB "Размер логической записи"
устанавливается в 80h. Поля даты и размера файла в FCB устанавлива-
ются из оглавления.

DOS, функция 10h
Закрыть файл через FCB

Вход:

AH=10h
DS:DX - адрес открытого FCB (Таблица Б-2)

Таблица Б-2. Формат FCB.

Смещ. Размер Описание
-07h байт Расширенный FCB, если FFh
-06h 5 байт Зарезервировано
-Olh байт Атрибут файла, если расширенный FCB
+00h байт Номер диска (0 - текущий, 1 - А...)
+01h 8 байт Имя файла
+09h 3 байта Расширение файла
+OCh слово Номер текущего блока
+OEh слово Размер логической записи
+10h двойное слово Размер файла
+14h слово Дата последней записи
+16h слово Время последней записи
+18h 8 байт Зарезервировано
+20h байт Запись с текущего блока
+21h двойное слово Номер записи при непосредственном доступе к файлу



Выход:

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

AL=FFh, если файл не найден там, где он находился при открытии

с помощью функции OFh

Описание.

Закрывает файл, открытый функцией OFh. Файл должен находиться на
своем первоначальном месте в текущем оглавлении диска, на котором
он был открыт. Если файл найден, оглавление обновляется, файловые
буфера сбрасываются и возвращается AL=OOh. Если файл не найден,
оглавление не обновляется и возвращается AL=FFh.

DOS, функция 11h
Найти первый совпадающий файл через FCB

Вход:

AH=llh
DS:DX - адрес неоткрытого FCB (Таблица Б-2)

Выход:

AL°OOh, если подходящее имя найдено

DTA заполнен
AL=FFh, если подходящего имени нет

Описание.

В текущем оглавлении DOS происходит поиск файлов с именем, соот-
ветствующим заданному шаблону. При неудаче возвращается
AL=OFFh. Если имя найдено, AL очищается, в первый байт DTA поме-
щается номер дисковода (А - 1, В - 2 и так далее), а в следующие
32 байта помещается элемент оглавления для найденного файла.

Можно использовать при вызове расширенный FCB, чтобы выбирать
файлы с указанными атрибутами. В этом случае в DTA помещаются:

байт FFh, 7 байт нулей, номер диска и элемент оглавления. ,

DOS, функция 12h
Найти следующий совпадающий файл через FCB

Ввод:

АН-12h
DS:DX - адрес неоткрытого FCB (Таблица Б-2)


Выход:

AL=OOh, если подходящее имя найдено

DTA заполнен
AL=FFh, если подходящего имени нет

Описание.

Используется после вызова функции llh (Найти первый совпадающий
файл через FCB) с обобщенным именем файла. Каждый последующий
вызов заполняет DTA очередным подходящим элементом оглавления
и возвращает AL=OOh. Если подходящих имен больше нет, возвращает-
ся AL=FFh.

Резервируемая область в FCB сохраняет информацию, необходимую
для продолжения поиска. Поэтому не стоит открывать и изменять FCB
между вызовами.

DOS, функция 13h
Удалить файл через FCB

Вход:

AH=13h
DS:DX - адрес неоткрытого FCB (Таблица Б-2)

Выход:

AL=OOh, если функция выполнена успешно
AL=FFh, если файл не найден или доступ к файлу не разрешен

Описание.

Эта функция удаляет все подходящие файлы в текущем оглавлении
указанного диска согласно спецификации в FCB. Если подходящие
файлы не найдены или если доступ отвергнут (как при попытке уда-
лить файл с атрибутом Read-Only), функция возвращает в регистре AL
значение FFh.

DOS, функция 14h
Последовательное чтение из файла через FCB

Вход:

AH°14h
DS:DX - адрес открытого FCB (Таблица Б-2)

Выход:

AL=OOh, если чтение было успешным и DTA содержит данные


AL=01h, если достигнут конец файла (EOF) и данные не считаны
AL=02h, если произошел выход за сегмент (чтения не было)
AL=03h, если EOF и считана усеченная запись (дополнена нулями)

Описание.

Функция читает файл, специфицированный в FCB. Затем соответствен-
но увеличивает значения полей в FCB.

Перед началом последовательной обработки файла нужно сбрасывать
CurRec в ноль, так как функция OFh не инициализирует это поле.

DOS, функция 15h
Последовательная запись в файл через FCB

Вход:

AH°15h
DS:DX - адрес открытого FCB (Таблица Б-2)

Выход:

AL=OOh, если запись была успешной

AL=01h, если ошибка переполнения диска (данные не записаны)

AL=02h, если произошел выход за сегмент (записи не было)

Описание.

Функция записывает файл, специфицированный в FCB. Затем соответ-
ственно увеличивает значения полей в FCB.

Перед началом последовательной обработки файла нужно сбрасывать
"Номер текщей записи" в ноль, так как функция OFh не инициализиру-
ет это поле.

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

DOS, функция 16h
Создание файла через FCB

Вход:

АН-16h
DS:DX - адрес неоткрытого FCB (Таблица Б-2)


Выход:

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

FCB заполнен
AL=FFh, если при выполнении функции возникли ошибки

Описание.

Файл, специфицированный неоткрытым FCB, создается на диске, ука-
занном в FCB (0 - текущий, 1 - А и так далее). Он открывается в те-
кущем оглавлении этого диска. FCB заполняется аналогично функции
OFh. Если файл существует в момент вызова, его элемент оглавления
перекрывается новым файлом, а длина файла сбрасывается в ноль.

Примечание.
Handle-ориентированные функции DOS 2.0+ гораздо удобнее в работе.

DOS, функция 17h
Переименовать файл через FCB

Вход:

AH-17h
DS:DX - адрес измененного FCB (Таблица Б-2)

Выход:

AL=OOh, если функция выполнена успешно
AL=FFh, если при выполнении функции возникли ошибки

Описание.
Переименовывает файл в текущем оглавлении.

DOS, функция 19h i
Получить текущий диск DOS

Вход:

AH=19h

Выход:

AL - номер текущего диска (0 - А, 1 - В, и так далее)

Описание.
Возвращает номер дисковода текущего диска DOS.


DOS, функция 1Ah
Установить адрес DTA

Вход:

AH=lAh
DS:DX - адрес DTA

Описание.

Устанавливает адрес DTA. Все FCB-ориентированные операции работа-
ют с DTA. DOS не позволяет операциям ввода/вывода пересекать гра-
ницу сегмента. Функции поиска llh, 12h, 4Eh и 4Fh помещают данные
в DTA. DTA глобальна, поэтому надо проявлять осторожность при на-
значении ее в рекурсивной процедуре. При запуске программы ее DTA
устанавливается по смещению 80h относительно PSP.

DOS, функция 1Bh
Получить информацию FAT для текущего диска

Вход:

AH°lBh

Выход:

DS:BX - адрес байта FAT ID, отражающего тип диска (Таблица Б-3)
DX - всего кластеров (единиц распределения) на диске
AL - секторов на кластер
СХ - байт на сектор

Таблица Б-3. Значения ID.

ID Описание
FFh Floppy, 2 стороны, 8 секторов на дорожку (320Кбайт)
FEh Floppy, 1 сторона, 8 секторов на дорожку (160Кбайт)
FDh Floppy, 2 стороны, 9 секторов на дорожку (360Кбайт)
FCh Floppy, 1 сторона, 9 секторов на дорожку (180Кбайт)
F9h Floppy, 2 стороны, 15 секторов на дорожку (1,2Мбайт)
F8h Жесткий диск
FOh Другой



Описание.

Возвращает информацию о размере и типе текущего диска. Размер дис-
ка (в байтах) равен DX*AL*CX. Свободную память можно найти функ-
циями 36h или 32h.

Версии:

DOS l.x держит FAT в памяти и возвращает DS:BX => FAT.
DOS 2.0+ может держать в памяти лишь часть всей FAT.

Примечание.
Эта функция изменяет содержимое регистра DS.

DOS, функция 1Ch
Получить информацию FAT для указанного диска

Вход:

АН-1Ch
DL - номер диска (0 - текущий, 1 - А и так далее)

Выход:

DS:BX - адрес байта FAT ID, отражающего тип диска (приведен в опи-
сании функции IBh)

DX - всего кластеров (единиц распределения)
AL - секторов на кластер
СХ - байт на сектор

Описание.

Аналогична функции IBh с той разницей, что регистр DL указывает

диск, для которого нужно получить информацию.

DOS, функция 21h ^
Считать произвольную запись файла

Вход:

AH-21h
DS:DX - адрес открытого FCB (Таблица Б-2)

Выход:

AL=OOh, если чтение было успешным и DTA заполнена данными
AL°01h, если достигнут конец файла (EOF) и чтения не было
AL=02h, если произошел выход за сегмент (чтения нет)
AL°03h, если встречен EOF и усеченная запись дополнена нулями


Описание.

Данная функция читает из файла с текущей позиции как с указанной

в полях FCB "Запись с текущей позиции" и "Номер записи при непо-
средственном доступе к файлу".

DOS, функция 22h
Писать произвольную запись файла

Вход:

AH=22h
DS:DX - адрес открытого FCB (Таблица Б-2)

Выход:

AL=OOh, если запись была успешной

AL=01h, при переполнении диска

AL=02h, если DTA+FCB выходит за сегмент (нет записи)

Описание.

Данная функция записывает в файл с текущей позиции как с указанной
в полях FCB "Запись с текущей позиции" и "Номер записи при непо-
средственном доступе к файлу".

DOS, функция 23п
Получить размер файла через FCB

Вход:

АН^ЗЬ
DS:DX - адрес неоткрытого FCB (Таблица Б-2)

Выход:

AL=OOh, если функция выполнена успешно
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 (lOOh байт, начиная с CS:0) копируется в DX:OOOOh, поле
МетТор соответственно корректируется, векторы Terminate, Ctrl-Break
и Critical Error копируются в PSP из векторов прерываний INT 22h,
INT 23h и INT 24h. После этого можно загрузить программу с диска
и передать ей управление посредством FAR JMP.

Примечание.

Если перехватывается INT 21h, нужно позаботиться о помещении в стек

корректного CS:IP. Еще лучше использовать функцию 4Ch.


Таблица Б-4. Формат PSP.

Смещ. Размер Описание
+00h 2 байта Инструкция INT 20h
+02h слово Сегмент первого байта памяти, выделенной программе
+04h байт Неиспользуемый заполнитель
+05h байт СР/М системный вызов
+06h слово Первый сегмент для СОМ-файла
+08h 2 байта Запоминаются FARJMP 05h
+OAh двойное слово Хранит INT 22h (адрес завершения)
+OEh двойное слово Хранит INT 23h (адрес обработчика Ctrl-Break)
+12h двойное слово Хранит INT 24h (адрес обработчика критической
ошибки)
+16h слово Сегмент родительского PSP
+18h 20 байт Рабочая таблица файлов. Один байт на файл (FFh -
закрыт)
+2Ch слово Сегмент среды окружения для процесса
+2Eh двойное слово SS:SP на входе при последнем вызове
прерывания INT 21 h
+32h слово Количество входов в рабочей таблице файлов
(по умолчанию 20)
+34h двойное слово Указатель на рабочую таблицу файлов
(по умолчанию PSP:0018h)
+38h двойное слово Указатель на предыдущий PSP
+3Ch 4 байта Зарезервировано
+40h 2 байта Версия при возврате на INT 2 lh (AH=30h)
+42h 26 байт Зарезервировано (используется MS Windows и
версиями DOS выше 6.00)
+5Ch 16 байт Первый FCB по умолчанию '
+6Ch 16 байт Второй FCB по умолчанию
+7Ch 4 байта Не используются
-i-ent, 1 Ой Й-.Д.Т.  



DOS, функция 27h
Читать произвольный блок файла

Вход:

AH°27h

DS:DX - адрес открытого FCB (Таблица Б-2)

СХ - число считываемых записей

Выход:

AL=OOh, если чтение успешно и DTA заполнена данными
AL=01h если достигнут конец файла (EOF) и данные не считаны
AL=02h, если при чтении произошел выход за границу сегмента
AL=03h, если EOF и считана усеченная порция (дополнена нулями)
СХ - действительное число считанных записей

Описание.

Читает несколько записей из файла, начиная с файлового адреса, ука-
занного полем "Номер записи при непосредственном доступе к файлу"
в FCB. Помещает данные в память, начиная с адреса DTA. Соответству-
ющие поля FCB корректируются, чтобы указывать на следующую за-
пись (первую за прочитанными).

DOS, функция 28h
Писать произвольный блок файла

Вход:

АН-28Н

DS:DX - адрес открытого FCB (Таблица Б-2)
СХ - число записываемых блоков (если СХ равен нулю, то размер фай-
ла усекается до указанного в поле FCB "Номер записи при непосред-
стванном доступе к файлу")

Выход:

AL=OOh, если запись успешна "1!
AL=01h, при переполнении диска

AL=02h, если при записи произошел выход за границу сегмента
СХ - действительное число сделанных записей '

Описание.

Записывает несколько блоков в файл, начиная с файлового адреса, ука-
занного полем "Номер записи при непосредственном доступе к файлу"
в FCB. Читает данные из памяти, начиная с адреса DTA. Соответству-
ющие поля FCB корректируются, чтобы указывать на следующую за-
пись (первую за прочитанными).


DOS, функция 29h
Разобрать имя файла

Вход:

AH=29h

DS:SI - адрес исходной текстовой строки для разбора

ES:DI - адрес буфера для результирующего неоткрытого FCB

(Таблица Б-2)

AL - битовые флаги, указывающие опции разбора (Таблица Б-5).

Выход:

AL=OOh, если результирующий FCB не содержит обобщенных символов
AL=01h, если результирующий FCB содержит обобщенные символы
AL°FFh, если неверно обозначение диска в имени файла
DS:SI - изменен - указывает на символ сразу вслед за именем файла
ES:DI - не изменен - указывает на неоткрытый FCB

Описание.

Создает неоткрытый FCB из строки текста или параметра команды.
Текст, начиная с DS:SI, анализируется как имя файла в формате
D.-FILENAME.EXT, и буфер по адресу ES:DI заполняется как соответ-
ственно форматированный FCB.

Таблица Б-5. Битовые флаги.

Бит Описание
0 Пропустить разделители
1 Использовать присутствующий номер диска, если диск не указан,
вместо того, чтобы устанавливать это поле в ноль ;
2 Использовать в FCB имя присутствующего файла, если базовое имя
не указано, вместо того, чтобы заполнять это поле стандартным •
заполнителем ,
3 Использовать в FCB расширение присутствующего файла, если
расширение не указано, вместо того, чтобы заполнять это поле
стандартным заполнителем
4 Зарезервировано



DOS, функция 2Ah
Получить системную дату

Вход:

АН-2АН

Выход:

AL - день недели (0 - воскресенье, 1 - понедельник, ... 6 - суббота),
DOS 3.0+

СХ - год (от 1980 до 2099)
DH - месяц (1 до 12)
DL - день (1 до 31)

Описание.
Возвращает текущую дату, которая известна системе.

Версии.

DOS 2.x не гарантирует возврата в AL значения дня.
DOS 1.0+ возвращает правильный день недели.
Версии до 2.1 имеют проблемы с переходом через дату.

DOS, функция 2Bh
Установить системную дату

Вход:

AH=2Bh

СХ - год (от 1980 до 2099)
DH - месяц (от 1 до 12)
DL - день (от 1 до 31)

Выход:

AL=OOh, если дата корректна ,
AL=FFh, если дата некорректна и не изменена

Описание. ,
Устанавливает системную дату DOS.

DOS, функция 2Ch
Получить время DOS

Вход:

AH°2Ch


Выход:

СН - часы (от 0 до 23)
CL - минуты (от 0 до 59)
DH - секунды (от 0 до 59)
DL - сотые доли секунды (от 0 до 99)

Описание.
Возвращает текущее время, которое известно системе.

Примечание.

Поскольку системные часы имеют частоту 18.2 Гц (интервал 55мс),

DL имеет точность примерно 0.04 сек.

DOS, функция 2Dh
Установить время DOS

Вход:

AH-2Dh

СН - часы (от 0 до 23)

CL - минуты (от 0 до 59)

DH - секунды (от 0 до 59)

DL - сотые доли секунды (от 0 до 99)

Выход:

AL=OOh, если время корректно
AL^FFh, если время некорректно и не изменено

Описание.
Устанавливает системное время DOS.

DOS, функция 2Eh
Установить/сбросить переключатель верификации

Вход:

AH^Eh

AL=OOh - отключить верификацию

AL=01h - включить верификацию

Описание.

Задает, должна ли DOS верифицировать (считывать обратно) каждый
сектор, записываемый на диск. Это замедляет операции записи на диск,
но гарантирует максимальную надежность записи.


DOS, функция 2Fh
Получить адрес текущей DTA

Вход:

AH=2Fh

Выход:

ES:BX - адрес начала текущей DTA

Описание.

Возвращает адрес начала области ввода-вывода (DTA). Поскольку DTA
глобальна для всех процессов, в рекурсивной процедуре (например, при
проходе по дереву оглавления) может потребоваться сохранить адрес
DTA, а впоследствии восстановить его посредством функции lAh.

Примечание.
Эта функция изменяет сегментный регистр ES.

Версии: DOS 2.00 и выше

DOS, функция ЗОИ
Получить номер версии DOS

Вход:

AH=30h

Выход:

AL - старший номер версии
АН - младший номер версии

BL:CX - 24-битный серийный номер (большинство версий не поддер-
живают этот параметр)

\
Описание.

Возвращает в АХ значение текущего номера версии DOS. Например,
для DOS 3.20 в AL возвращается 03h, в АН - 14h.

Примечание.

Если в AL возвращается OOh, можно предполагать, что работает DOS

более ранней версии, чем DOS 2.0.

Версии: DOS 2.00 и выше.


DOS, функция 31h
Завершиться и остаться резидентным

Вход:

AH=31h

AL - код выхода

DX - объем памяти, оставляемой резидентной (в параграфах)

Описание.

Выходит в родительский процесс, сохраняя код выхода в AL. Код выхо-
да можно получить через функцию 4Dh. DOS устанавливает начальное
распределение памяти, как специфицировано в DX, и возвращает управ-
ление родительскому процессу, оставляя указанную память резидентной
(число байт равно DX*16). Эта функция перекрывает функцию
INT 27h, которая не возвращает код выхода и не способна установить
резидентную программу, размер которой превышает 64Кбайт.

Версии: DOS 2.00 и выше.

DOS, функция 32h
Получить информацию DOS о диске

(Официально не документирована)

Вход:

AH=32h
DL - номер диска (0 - текущий, 1 - А и так далее)

Выход:

AL=OOh, если в DL был задан корректный диск

DS:BX - адрес блока информации о диске для запрошенного уст-
ройства (Таблица Б-6)

AL=FFh, если в DL был задан некорректный диск

Описание.

Возвращает блок информации, представляющей интерес для приложе-
ний и утилит, которые выполняют доступ к дискам, поддерживаемым
драйверами устройств, на уровне секторов.

Некоторые дисководы (особенно незагружаемые) функционируют только
через свои драйвера устройств. Такие диски могут содержать неверную
информацию в корневой записи и таблице разделов, что делает очень


трудным определение, например, размера корневого оглавления, числа
таблиц FAT и прочего. Блок информации диска содержит такие данные
в хорошо форматированной структуре.

Версии: DOS 2.00 и выше.

Таблица Б-6. Формат блока информации о диске.

Смещ. Размер Описание
+00h байт Номер диска (0 - текущий, 1 - А и так далее)
+01h байт Количество блоков в драйвере диска
+02h слово Количество байт в секторе
+04h байт Наибольший номер сектора в кластере
+05h байт Счетчик сдвига для конвертации кластера в сектор
+06h слово Количество зарезервированных секторов в начале диска
+08h байт Количество FAT
+09h слово Количество входов в root-директорию
+OBh слово Номер первого сектора, содержащего данные
+ODh слово Максимальный номер кластера
+OFh байт Количество секторов в FAT
+10h слово Номер первого сектора директории
+12h двойное слово Адрес заголовка драйвера устройства
+16h байт ID (отражает тип диска)
+17h байт OOh, если диск доступен и FFh, если нет
+18h двойное слово Указатель на следующий блок информации о диске
Для версий DOS 2.XX
+lCh слово Кластер, содержащий старт текущей директории.
OOOOh - root, FFFFh - не известно
+lEh 64 байта Путь текущей директории для диска в формате ASCIZ
Для версий DOS 3.XX
+lCh слово Кластер, с которого начинается поиск свободного места
при записи некоторого количества секторов на диск
+lEh слово Количество свободных секторов на диске.
FFFFh - не известно



Таблица Б-6. Формат блока информации о диске. {Окончание)

Смещ. Размер Описание
Для версий DOS 4.XX - 6.ХХ
+OFh слово Количество секторов в FAT
+llh слово Номер первого сектора директории
+13h двойное слово Адрес заголовка драйвера устройства
+17h байт ID (отражает тип диска)
+18h байт OOh, если диск доступен, и FFh, если нет
+19h двойное слово Указатель на следующий блок информации о диске
+lDh слово Кластер, с которого начинается поиск свободного кластера
при записи некоторого количества секторов на диск
+lFh слово Количество свободных секторов на диске.
FFFFh - не известно


DOS, функция 33h
Установить/опросить статус Ctrl-Break

Вход:

AH=33h

AL=OOh - опросить текущий статус контроля Ctrl-Break
AL=01h - установить статус контроля Ctrl-Break
DL - требуемый статус (0 - выключен, 1 - включен)

Выход:

DL - текущий статус (0 - выключен, 1 - включен)

Описание.

Если AL=OOh, в DL возвращается текущий статус контроля Ctrl-Break.

Если AL=01h, в DL возвращается новый текущий статус.

Когда статус "включен", DOS при выполнении большинства функций
(исключая 06h и 07h) проверяет, нажаты ли клавиши Ctrl-Break. Если
это обнаружено, выполняется прерывание INT 23h (если оно не пере-
хватывается, то процесс снимается).

При статусе "выключен" DOS проверяет на нажатие Ctrl-Break лишь
при выполнении операций стандартного ввода/вывода, стандартной пе-
чати и стандартного AUX.

Версии: DOS 2.00 и выше.


DOS, функция 34h
Получить адрес флага активности DOS

(Официально не документирована)

Вход:

AH°34h

Выход:

ES:BX - адрес флага активности DOS

Описание.

Функция возвращает флаг активности DOS, который показывает, мож-
но ли на данный момент вызывать функции DOS. Эту функцию ис-
пользует, например, функция фоновой печати PRINT.

Если ES:[BX] не нулевой, фоновая программа (TSR либо popup)
не должна использовать никаких функций DOS.

Версии: DOS 2.00 и выше.

DOS, функция 35h
Получить вектор прерывания

Вход:

AH-35h
AL - номер прерывания (OOh до FFh)

Выход:

ES:BX - адрес обработчика прерывания

Описание.

Возвращает значение вектора прерывания для INT (AL), то есть загру-
жает в ВХ 0000:[AL*4], а в ES - 0000:[(AL*4)+2].

Примечание.
Эта функция изменяет сегментный регистр ES.

Версии: DOS 2.00 и выше.

DOS, функция 36h
Получить свободную память диска

Вход:

АН-ЗбЬ
DL - номер диска (0 - текущий, 1 - А и так далее)


Выход:

AX=FFFFh, если AL содержал неверный номер диска
Если функция выполнена успешно:

AX - число секторов на кластер
ВХ - число доступных кластеров
СХ - байт на сектор
DX - всего кластеров на диске

Описание.

Возвращает данные, полезные для подсчета общей и доступной диско-
вой памяти. Если в АХ возвращено FFFFh, значит задан неверный
диск. Иначе свободная память (в байтах) составляет (АХ*ВХ*СХ), все-
го памяти (AX*CX*DX) байт.

Версии: DOS 2.00 и выше.

DOS, функция 37h
Установить/опросить символ-переключатель

(Официально не документирована)

Вход:

AH=37h

AL=OOh - опросить текущий переключатель
AL=01h - установить символ-переключатель
DL - символ-переключатель

Выход:

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

DL - текущий символ-переключатель DOS (если при вызове AL=OOh)
AL=FFh, если использована неподдерживаемая подфункция

Описание.

Устанавливает или опрашивает "Глобальный переключатель" DOS. Пе-
реключатель (SWITCHAR) - это символ, используемый в командной
строке как признак опции. По умолчанию принимается "/" (например,
DIR /w/p), но его можно изменить на "-" (DIR -w-p), если нужно, что-
бы система была больше похожа на UNIX. Общепринято опрашивать
значение SWITCHAR перед разбором области неформатированных па-
раметров в PSP для выделения опций команды.


Примечание.

Эта недокументированная команда может измениться в будущих верси-
ях DOS. He рекомендуется изменять SWITCHAR.

Версии: DOS 2.00 и выше.

DOS, функция 38h
Получить/установить информацию о стране

Вход:

AH-SSh
Получить информацию:

AL=OOh - получить данные для текущей страны

DS:DX - адрес локального буфера для чтения блока данных страны

(Таблица Б-7)
Установить информацию:

AL=01h-FEh - установить данные для указанной страны < 255

AL=FFh - установить данные для кода страны > 255

ВХ - 16-битный код страны (Таблица Б-8)

DX=FFFFh

Выход:

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

ВХ - код страны
CF=1, если при выполнении функции возникли ошибки

AX - код ошибки

Описание.

Если DX=FFFFh, то текущий код страны устанавливается равным AL
(если AL=FFh, то код страны устанавливается равным ВХ). Обычно код
страны устанавливается в файле CONFIG.SYS. Если DX<FFFFh,
то DS:DX адресует буфер пользователя, в который помещается 20Ь-байт-
ный блок данных для указанной страны.

Версии: DOS 2.00 и выше.

DOS, функция 39h
Создать новое оглавление

Вход:

АН-ЗЭЬ
DS:DX - адрес строки ASCIZ с именем оглавления


Таблица 6-7. Формат блока данных страны.

Смещ. Размер Описание
+00h слово Формат даты:
  OOh - USA (месяц дата год)
  Olh - Европа (дата месяц год)
  02h - Япония (год месяц дата)
+02h 5 байт Текущая строка символов в формате ASCIZ
+07h 2 байта Разделитель тысяч в формате ASCIZ
+09h 2 байта Разделитель целой и дробной части в формате ASCIZ
+OBh 2 байта Разделитель даты в формате ASCIZ
+ODh 2 байта Разделитель времени в формате ASCIZ
+OFh байт Текущий формат:
Бит 2 - текущий символ заменяется десятичной точкой
Бит 1 - количество пробелов между значением и текущим
символом
Бит 0=0 - текущий символ предшествует значению
Бит 0-=1 - текущий символ следует за значением
+10h байт Количество символов в дробной части числа
+llh байт Формат времени:
Бит 0~0 - 12-часовые часы
Бит 0=1 - 24-часовые часы
+12h двойное слово Адрес карты (CALL FAR при AL=кoд символа больше 80h)
+16h 2 байта Список разделителей в формате ASCIZ
+18h 10 байт Зарезервировано


Выход:

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

АХ не сохранен
CF=1, если при выполнении функции возникли ошибки

АХ - код ошибки

Описание.

Если диск и/или корневой путь не указаны, то новое оглавление созда-
ется в текущей директории. Поддиректория создается и связывается


Таблица Б-8. Коды некоторых стран.

Код Страна
OOlh Соединенные Штаты Америки
003h Латинская Америка
007h Россия
OlFh Нидерланды
020h Бельгия
021h Франция
022h Испания
027h Италия
02Ch Великобритания
031h Германия


с существующим деревом. Если флаг CF установлен при возврате,
то АХ содержит код ошибки, и оглавление не создается.

Версии: DOS 2.00 и выше.

DOS, функция 3Ah
Удалить оглавление

Вход:

АН-ЗАЬ
DS:DX - адрес строки ASCIZ с именем оглавления

Выход:

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

АХ не сохранен
CF=1, если при выполнении функции возникли ошибки

АХ - код ошибки

Описание.

Если диск и/или корневой путь не указаны, принимаются значения по
умолчанию. Поддиректория удаляется из структуры оглавлений. Если
флаг CF установлен при возврате, то АХ содержит код ошибки, и оглав-
ление не удаляется.


Примечание.

Оглавление не должно содержать файлов и поддиректорий, оно не должно
попадать под влияние возможных ограничений DOS (например, не долж-
но быть задействовано в активных командах JOIN или SUBST).

Версии: DOS 2.00 и выше.

DOS, функция 3Bh
Установить текущую директорию

Вход:

АН-ЗВЬ
DS:DX - адрес строки ASCIZ с именем оглавления

Выход:

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

АХ не сохранен
CF=1, если при выполнении функции возникли ошибки

АХ - код ошибки

Описание.

Если диск и/или корневой путь не указаны, принимаются значения по
умолчанию. Указанная поддиректория становится текущим оглавлени-
ем DOS для этого (или текущего) диска. Если флаг CF установлен при
возврате, то АХ содержит код ошибки, и текущее оглавление для выб-
ранного диска не изменяется.

Версии: DOS 2.00 и выше.

DOS, функция 3Ch
Создать файл через описатель

Вход:

АН-ЗСЬ

DS:DX - адрес строки ASCIZ с именем файла

СХ - атрибут файла (атрибуты приведены в описании функции

DOS 43h)

Выход:

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

АХ - описатель файла
CF=1, если при выполнении функции возникли ошибки

АХ - код ошибки


Описание.
Если диск и/или путь не указаны, принимаются значения по умолчанию.

Версии: DOS 2.00 и выше.

DOS, функция 3Dh
Открыть описатель файла

Вход:

AH=3Dh

DS:DX - адрес строки ASCIZ с именем файла

AL - режим открытия:

AL=OOh, чтобы открыть для чтения
AL=01h, чтобы открыть для записи
AL=02h, чтобы открыть для чтения и записи

Выход:

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

AX - описатель файла
CF=1, если при выполнении функции возникли ошибки

AX - код ошибки

Описание.

Файл открывается в выбранном режиме доступа (режиме открытия).
Если диск и/или путь не указаны, принимаются указанные по умолча-
нию. Файл должен существовать. Указатель чтения/записи устанавли-
вается в ноль.

Версии: DOS 2.00 и выше.

DOS, функция 3Eh
Закрыть описатель файла

Вход:

АН-ЗЕЬ
ВХ - описатель файла

Выход:

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

АХ не сохранен
CF=1, если при выполнении функции возникли ошибки

АХ - код ошибки


Описание.

ВХ содержит описатель файла (handle), возвращенный при открытии.
Файл, представленный этим описателем, закрывается, его буферы сбра-
сываются и оглавление обновляется корректными размером, временем
и датой. Из-за недостатка описателей файлов (максимум 20, по умолча-
нию установлено 8), возможно, придется закрыть часть текущих описа-
телей, как, например, описатель 3 (стандартный AUX).

Версии: DOS 2.00 и выше.

DOS, функция 3Fh
Читать файл через описатель

Вход:

AH=3Fh

ВХ - описатель файла

DS:DX - адрес буфера для чтения данных

СХ - число считываемых байт

Выход:

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

AX - число действительно прочитанных байт
CF=1, если при выполнении функции возникли ошибки

AX - код ошибки

Описание.

СХ байт данных считываются из файла или устройства с описателем,
указанным в ВХ. Данные читаются с текущей позиции указателя чте-
ния/записи файла и помещаются в буфер вызывающей программы, ад-
ресуемый через DS:DX. Если необходимо установить позицию чтения/
записи, можно использовать функцию 42h. Эта функция обновляет ука-
затель чтения/записи файла, чтобы подготовиться к последующим опе-
рациям чтения или записи.

Версии: DOS 2.00 и выше.

DOS, функция 40h
Писать в файл через описатель

Вход:

AH=40h


ВХ - описатель файла

DS:DX - адрес буфера, содержащего записываемые данные

СХ - число записываемых байт

Выход:

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

AX - число действительно записанных байт
CF°1, если при выполнении функции возникли ошибки

AX - код ошибки

Описание.

СХ байт данных записываются в файл или на устройство с описателем,
заданным в ВХ. Данные берутся из буфера, адресуемого через DS:DX,
и записываются, начиная с текущей позиции указателя чтения/записи
файла. Чтобы установить указатель файла, если необходимо, можно ис-
пользовать функцию 42h. Обновляет указатель чтения/записи файла,
чтобы подготовиться к последующим операциям чтения или записи.

Версии: DOS 2.00 и выше.

DOS, функция 41h
Удалить файл

Вход:

AH^lh
DS:DX - адрес строки ASCIZ с именем файла

Выход:

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

АХ не сохранен
CF=1, если при выполнении функции возникли ошибки

АХ - код ошибки

Описание.

Файл удаляется из оглавления заданного диска. Если диск и/или путь
не указаны, принимаются значения по умолчанию. Имя файла не может
содержать обобщенные символы ("?" и "*"). Если файл имеет атрибут
"только чтение", то перед удалением необходимо изменить этот атрибут
через функцию 43h.

Версии: DOS 2.00 и выше.


DOS, функция 42h
Переместить указатель файла

Вход:

AH^h

ВХ - описатель файла ^
CX:DX на сколько передвинуть указатель: (CX*65536)+DX
AL=OOh переместить относительно начала файла +CX:DX
AL=01h переместить относительно текущей позиции +CX:DX
AL=02h переместить относительно конца файла +CX:DX

Выход:

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

DX:AX новая позиция указателя файла (если нет ошибки)
CF=1, если при выполнении функции возникли ошибки

AX - код ошибки

Описание.

Перемещает логический указатель чтения/записи к нужной позиции.

Очередная операция чтения или записи начнется с этого адреса.

Примечание.

Вызов с AL=2, CX=0, DX=0 возвращает длину файла в DX:AX.

Действительная длина файла равна (DX*65536)+AX.

Версии: DOS 2.00 и выше.

DOS, функция 43h
Установить/опросить атрибуты файла

Вход:

AH=43h

DS:DX - адрес строки ASCIZ с именем файла

AL=OOh - извлечь текущий атрибут файла

AL=01h - установить атрибут файла

СХ - новый атрибут файла (для подфункции 01Ь)(Таблица Б-9)

Выход:

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

СХ - текущий атрибут файла (для подфункции ООЬ)(Таблица Б-9)

АХ не сохранен
CF=1, если при выполнении функции возникли ошибки

АХ - код ошибки


Таблица Б-9. Атрибуты файла.

Бит Атрибут
0 Только чтение
1 Скрытый
2 Системный
3 Метка тома (может находиться только в корневом каталоге)
4 Директория
5 Архивный


Описание.

Атрибут файла читается или устанавливается, согласно коду в AL.

Если диск и/или путь не указаны, принимаются значения по умолчанию.

Примечание.

Чтобы скрыть оглавление, нужно использовать CX=02h (а не 12h, как

можно было ожидать).

Версии: DOS 2.00 и выше.

DOS, функция 44h
Управление устройством ввода/вывода

Вход:

AH=44h
AL - код подфункции:

AL=OOh - получить информацию об устройстве
AL=01h - установить информацию об устройстве
AL=02h - читать с символьного устройства
AL=03h - писать на символьное устройство
AL=04h - читать с блочного устройства
AL=05h - писать на блочное устройство
AL=06h - дать статус ввода
AL=07h - дать статус вывода
AL=08h - запрос съемного носителя
AL=09h - запрос удаленного устройства
AL=OAh - запрос удаленного описателя
AL=OBh - счет повторов разделения
AL=OCh - кодовые страницы 3.3

9- 1436


AL-ODh - общий IOCTL

AL=OEh - получить логическое устройство

AL=OFh - установить логическое устройство

Версии: DOS 2.00 и выше.

DOS, функция 45h
Дублировать описатель файла

Вход:

AH-45h
ВХ - существующий описатель файла

Выход:

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

AX - новый описатель файла, дублирующий оригинал
CF=1, если при выполнении функции возникли ошибки

AX - код ошибки

Описание.

Создает дополнительный описатель файла, ссылающийся на тот же по-
ток ввода/вывода, что и существующий описатель. Любое продвижение
указателя чтения/записи одного описателя (включая любые операции
чтения, записи или перемещения указателя посредством функции 42h)
действует на его дубликат.

Версии: DOS 2.00 и выше.

DOS, функция 46h
Переназначить описатель

Вход:

АН-46П

ВХ - целевой описатель файла (должен уже существовать)

СХ - исходный описатель файла (должен уже существовать)

Выход:

CF=0, если функция выполнена успешно
CF=1, если при выполнении функции возникли ошибки
AX - код ошибки

Описание.

Заставляет описатель файла (handle) ссылаться на другой файл или ус-
тройство. Если описатель в СХ (источник) открыт, он закрывается,


а затем становится дубликатом описателя в ВХ (назначения). Иными
словами, описатели в СХ и ВХ будут ссылаться на один и тот же физи-
ческий файл или устройство.

Версии: DOS 2.00 и выше.

DOS, функция 47h
Получить текущее оглавление DOS

Вход:

AH°47h

DS:SI - адрес локального буфера для результирующего пути - 64 байта

DL - номер диска (0 - текущий, 1 - А и так далее)

Выход:

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

АХ не сохранен
CF=1, если при выполнении функции возникли ошибки

АХ - код ошибки

Описание.

В буфер по адресу DS:SI помещается в форме ASCIZ путь текущего ог-
лавления для диска, указанного в DL. Путь возвращается в формате:

"путь\оглавление",0. Впереди не подставляется буква диска, а сзади не
подставляется символ "\". Например, если текущим является корневое
оглавление, эта функция вернет пустую строку (DS:[SI]=0).

Версии: DOS 2.00 и выше.

DOS, функция 48h
Выделить память

Вход:

AH^Sh
ВХ - запрошенное количество памяти в 16-байтных параграфах

Выход:

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

АХ - сегментный адрес распределенного блока
CF"!, если при выполнении функции возникли ошибки

АХ - код ошибки

ВХ - размер максимального доступного блока памяти (в параграфах)


Описание.

Распределяет блок памяти длиной ВХ параграфов, возвращая сегмент-
ный адрес этого блока в АХ (блок начинается с АХЮООО). Если распре-
деление неудачно, устанавливается флаг CF, в АХ возвращается код
ошибки, а ВХ содержит максимальный размер доступной для распреде-
ления памяти (в параграфах). Чтобы определить наибольший доступ-
ный блок, общепринято устанавливать BX=FFFFh перед вызовом.
Распределение завершится с ошибкой, возвратив размер максимально-
го блока памяти в ВХ.

Версии: DOS 2.00 и выше.

DOS, функция 49h
Освободить блок памяти

Вход:

AH=49h
ES - сегментный адрес освобождаемого блока памяти

Выход:

CF=0, если функция выполнена успешно
CF=1, если при выполнении функции возникли ошибки
АХ - код ошибки

Описание.

Освобождает блок памяти, начинающийся с адреса ES:0000. Этот блок
становится доступным для других запросов системы. Вообще говоря,
нужно освобождать лишь те блоки памяти, которые получены через
функцию 48h (распределить память). Родитель отвечает за освобожде-
ние памяти порожденных процессов. Тем не менее, ничто не препят-
ствует освобождать память чужих процессов.

Версии: DOS 2.00 и выше.

DOS, функция 4Ah
Изменить размер блока памяти

Вход:

АН°4АЬ

ES - сегмент распределенного блока памяти

ВХ - нужный размер блока в 16-байтных параграфах

Выход:

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


CF=1, если при выполнении функции возникли ошибки
AX - код ошибки
ВХ - размер максимального доступного блока памяти (в параграфах)

Описание.

Изменяет размер существующего блока памяти. Когда программа полу-
чает управление, функция 4Bh уже распределила блок памяти, начиная
с PSP, который содержит всю доступную память. Чтобы освободить па-
мять для запуска порождаемых процессов, блок памяти, начинающийся
с PSP, необходимо сначала сжать.

Примечание.
Функция 31h и INT 27h (TSR) сжимают блок по адресу PSP.

Версии: DOS 2.00 и выше.

DOS, функция 4Bh
Выполнить или загрузить программу

Вход:

AH"4Bh

DS:DX - адрес строки ASCIZ с именем файла, содержащего программу

ES:BX - адрес ЕРВ (блока параметров ЕХЕС)

AL=°OOh - загрузить и выполнить

AL=01h - загрузить, но не выполнять

AL=03h - загрузить программный оверлей

Выход:

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

ВХ, DX не сохранены
СЕ=1, если при выполнении функции возникли ошибки

AX - код ошибки

Описание.

Данная функция загружает в память и запускает программу, имя кото-
рой указано в регистрах DS:DX. Запущенная программа после заверше-
ния работы возвратит управление запускаемой. Если диск или путь
не указаны, принимаются значения по умолчанию. ES:BX указывает
на блок памяти, подготовленный как ЕРВ, формат которого зависит
от запрошенной подфункции в AL.

Версии: DOS 2.00 и выше.


DOS, функция 4Ch
Завершить программу

Вход:

AH=4Ch
AL - код выхода

Описание.

Возвращает управление от порожденного процесса его родителю, уста-
навливая код выхода (его можно опросить функцией 4Dh). Управление
передается по адресу завершения в PSP завершающейся программы.
Векторы Ctrl-Break и Critical Error восстанавливаются к старым адре-
сам, сохраненным в родительском PSP.

Примечание.

Значение ERRORLEVEL (используемое в пакетных файлах DOS)
можно использовать для проверки кода выхода самой последней про-
граммы.

Версии: DOS 2.00 и выше.

DOS, функция 4Dh
Получить код выхода программы

Вход:

AH=4Dh

Выход:

АН - код выхода последнего завершившегося процесса

AH=OOh - нормальное завершение

AH=01h - завершение через Ctrl-Break INT 23h

AH=02h - завершение по критической ошибке устройства INT 24h

AH=03h - завершение через функцию 31h

AL - код выхода

Описание.

Возвращает код выхода последнего из завершившихся процессов. Эта
функция возвращает правильную информации/только однажды для
каждого завершившегося процесса.

Версии: DOS 2.00 и выше.


DOS, функция 4Eh
Найти первый совпадающий файл

Вход:

АН-4ЕП

DS:DX - адрес строки ASCIZ с именем файла (допускается использо-
вать символы "?" и "*")
СХ - атрибут файла для сравнения

Выход:

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

DTA заполнена данными (Таблица Б-10)
CF=1, если при выполнении функции возникли ошибки

AX - код ошибки

Описание.

Если диск и/или путь не указаны, принимаются значения по умолча-
нию. Обобщенные символы "*" и "?" допускается использовать в име-
ни файла и расширении.

Версии: DOS 2.00 и выше.

DOS, функция 4Fh
Найти следующий совпадающий файл

Вход:

AH-4Fh

DS:DX - адрес данных, возвращенных предыдущей 4Eh (Найти пер-
вый файл)

Выход:

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

DTA заполнена данными
CF°1, если при выполнении функции возникли ошибки

AX - код ошибки

Описание.

Эту функцию можно использовать после вызова 4Eh. Следующее имя фай-
ла, совпадающее по обобщенному имени и атрибуту файла, копируется
в буфер по адресу DS:DX вместе с другой информацией (Таблица Б-10).

Примечание.
Параметр DS:DX добавлен в DOS 3.0.

Версии: DOS 2.00 и выше.


DOS, функция 52h
Получить адрес векторной таблицы связи

(Официально не документирована)

Вход:

АН-52П

Выход:

ES:BX - адрес векторной таблицы связи (Таблица Б-11)

Описание.
Данная функция возвращает адрес векторной таблицы связи.

Версии: DOS 2.00 и выше.

Таблица Б-]]. Формат векторной таблицы связи.

Смещ. Размер Описание
-18h слово Содержимое СХ при вызове INT 21h при AX=5E01h
-16h слово Счетчик для кэшируемых FCB
-14h слово Счетчик для открытых FCB
-12h двойное слово Адрес обработчика OEM-функций (FFFFh:FFFFh,
если обработчик не установлен)
-OEh слово Смещение в кодовом сегменте DOS кода
возврата из прерывания INT 21h
-ОСЬ слово Счетчик повторов
-OAh слово Задержка повтора
-08h двойное слово Указатель на буфер текущего диска
-04h слово Сегмент данных DOS
-02h слово Сегмент первого МСВ
+00h двойное слово Указатель на первый блок параметров диска
+04h двойное слово Указатель на первую системную файловую таблицу
+08h двойное слово Указатель на заголовок активного драйвера часов
+OCh двойное слово Указатель на заголовок активного драйвера консоли



DOS, функция 54h
Получить переключатель верификации DOS

Вход:

AH=54h

Выход:

AL=OOh, если верификация выключена (OFF)
AL=01h, если верификация включена (ON)

Описание.

Возвращает текущий статус верификации записи DOS. Если в AL воз-
вращается 1, то DOS считывает обратно каждый сектор, записываемый
на диск, чтобы проверить правильность записи. Функция DOS 2Eh по-
зволяет установить/изменить режим верификации.

Версии: DOS 2.00 и выше.

DOS, функция 56h
Переименовать/переместить файл

Вход:

AH=56h

DS:DX - адрес старого ASCIZ имени (путь/имя существующего файла)

ES.-DI - адрес нового ASCIZ имени (новые путь/имя)

Выход:

CF^O, если функция выполнена успешно
CF^l, если при выполнении функции возникли ошибки
AX - код ошибки

Описание.

Старое имя DS:DX должно существовать и не может содержать обоб-
щенных символов. Диск и путь необязательны (если они не указаны,
принимаются значения по умолчанию). Новое имя ES:DI должно опи-
сывать несуществующий файл. Если указан диск, он должен быть тем
же, что и в старом имени. Если диск или путь не указаны, принимают-
ся текущие. Если старое и новое имя содержат разные пути (явные или
принятые по умолчанию), то элемент оглавления для файла перемеща-
ется в оглавление, указанное в новом имени.

Версии: DOS 2.00 и выше.


DOS, функция 57h
Установить/опросить дату/время файла

Вход:

АН-ЗУЬ

AL=OOh - получить дату/время файла

AL=01h - установить дату/время файла

ВХ - описатель файла (handle)

СХ (если AL=1) - новая отметка времени в формате время файла

DX (если AL=1) - новая отметка даты в формате дата файла

Выход:

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

СХ - (если при вызове AL=0) отметка времени файла в формате
время/дата файла (Таблица Б-12)

DX - (если при вызове AL=0) отметка даты файла в формате вре-
мя/дата файла (Таблица Б-13)

CF=1, если при выполнении функции возникли ошибки
AX - код ошибки

Описание.

ВХ должен содержать описатель открытого файла (см. 3Ch или 3Dh).
DX и СХ задаются в формате памяти (например, младшие 8 бит даты
находятся в DH).

Версии: DOS 2.00 и выше.

DOS, функция 59h
Получить расширенную информацию об ошибке

Вход: ______

AH°59h
BX-OOOOh (номер версии: ООООЬ для DOS 3.0, 3.1 и 3.2)

Таблица Б-12. Формат времени файла. Таблица Б-13. Формат даты файла.

Биты Описание
15-11 Часы
10-5 Минуты
4-0 Секунды/2


Биты Описание
15-9 Год-1980
8-5 Месяц
4-0 Дата



Выход:

AX - расширенный код ошибки (0, если ошибки не было)

ВН - класс ошибки

BL - предлагаемое действие

СН - сфера (где произошла ошибка)

Описание.

Эту функцию можно использовать, чтобы уточнить, что предпринять
после сбоя функции DOS по ошибке (только DOS 3.0+). Ее можно вы-
зывать: в обработчике критических ошибок INT 24h, после любой фун-
кции INT 21h, возвратившей флаг переноса после вызова FCB-функ-
ции, возвратившей AL=FFh.

Версии: DOS 3.00 и выше.

DOS, функция 5Ah
Создать уникальный временный файл

Вход:

AH=5Ah

DS:DX - адрес строки ASCIZ с диском и путем (заканчивается симво-
лом "\") \
СХ - атрибут файла

Выход:

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

AX - описатель файла

DS:DX - (не изменяется) полное ASCIZ-имя нового файла
CF=1, если при выполнении функции возникли ошибки

AX - код ошибки

Описание.

Открывает (создает) файл с уникальным именем в каталоге, заданном
строкой ASCIZ, на которую указывает DS:DX. COMMAND.COM вызы-
вает эту функцию, когда создает временные "канальные" файлы, ис-
пользуемые при переназначении ввода-вывода. Описание пути должно
быть готово к добавлению в его конец имени файла. Необходимо обес-
печить минимум 12 байт в конце строки. Сама строка должна быть за-
полнена в одной из форм: "d:\nyrb\",0 (указан диск и путь), "d>,0 (те-
кущее оглавление диска) или "d:\",0 (корневое оглавление диска).

Версии: DOS 3.00 и выше.


DOS, функция 5Bh
Создать новый файл

Вход:

AH-SBh

DS:DX - адрес строки ASCIZ с именем файла

СХ - атрибут файла

Выход:

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

AX - описатель файла
CF=1, если при выполнении функции возникли ошибки

AX - код ошибки

Описание.

Файл открывается для чтения/записи в совместимом режиме доступа.
Если диск и/или путь не указаны, принимаются значения по умолча-
нию. Этот вызов идентичен функции DOS 3Ch с тем исключением, что
он вернет ошибку, если файл с заданным именем уже существует.

Версии: DOS 3.00 и выше.

DOS, функция 5Ch
Блокировать/разблокировать доступ к файлу

Вход:

AH-SCh

AL - подфункция:

AL=OOh - заблокировать область файла

AL=01h - разблокировать ранее заблокированную область

ВХ - описатель файла

CX-.DX - смещение ((CX*65536)+DX) от начала файла

SLDI - длина блокируемой области ((SI*65536)+DI) байт

Выход:

CF=0, если функция выполнена успешно
CF=1, если при выполнении функции возникли ошибки
AX - код ошибки

Описание.

Блокирует или освобождает доступ к участку файла, указанного в ВХ.

Область файла с логическим смещением CX:DX и длиной SLDI


блокируется (захватывается) или разблокируется (освобождается). Сме-
щение и длина обязательно должны быть указаны. Разделение файлов
должно быть активизировано (командой SHARE), иначе функция вернет
код ошибки "Неверный номер функции".

Версии: DOS 3.00 и выше (при обязательной загрузке SHARE).

DOS, функция 62h
Получить адрес PSP

Вход:

AH^h

Выход:

ВХ - сегментный адрес PSP выполняющейся программы

Описание.

Эта функция возвращает в ВХ адрес PSP текущей программы. Исполь-
зуется, для получения адреса параметров командной строки, адреса ок-
ружения DOS и другой полезной информации, содержащейся в PSP.

Версии: DOS 3.00 и выше.

DOS, функция 65h
Получить расширенную информацию страны

Вход:

AH=65h DOS 3.3
AL - подфункция:

AL=01h - дать расширенную информацию страны DOS 3.3
AL=02h - дать таблицу преобразования строчных букв в прописные
AL=04h - то же для символов, допустимых в именах файлов
AL=06h - дать сопоставляющую последовательность
DX - код страны

ВХ - кодовая страница (FFFFh - консоль)
СХ - размер буфера возврата (должен быть минимум 5 байт)
ES:DI - адрес буфера возврата

Выход:

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

ES:DI - адрес возвращенной информации
CF=1, если при выполнении функции возникли ошибки:

AX - код ошибки


Описание.

Эта функция возвращает различную национальную информацию.
Используется для получения формата даты, символа валюты и других
данных, необходимых для вывода и сортировки информации (во всех
странах, кроме США).

Версии: DOS 3.30 и выше.

DOS, функция 66h
Получить/установить глобальную кодовую страницу

Вход:

AH-66h

AL - подфункция:

AL=01h - запросить текущую глобальную кодовую страницу

AL=02h - установить активную кодовую страницу

ВХ - (при AL=02h) кодовая страница (Таблица Б-14)

DX - (при AL=02h) системная кодовая страница (устанавливаемая при

загрузке)

Выход:

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

ВХ - (если при вызове AL=01h) текущая активная кодовая страница
DX - (если при вызове AL=01h) системная кодовая страница (уста-
навливаемая при загрузке)

CF=1, если при выполнении функции возникли ошибки
AX - код ошибки

Описание.

Эта функция выбирает новую кодовую страницу или получает значение
текущей активной кодовой страницы (страниц). Программа DOS
NLSFUNC должна быть загружена до этого вызова. Функция использу-
ется в сочетании с 65h или 38h.

Примечание.

Устанавливая новую активную кодовую страницу, DOS читает данные

из файла COUNTRY.SYS.

Версии: DOS 3.30 и выше.


Таблица Б-14. Значения кодовых страниц.

Кодовая
страница
Страна (язык)
437 Соединенные Штаты Америки
850 Многоязыковая
857 Турция
860 Португалия
861 Исландия
863 Канада (французский)
865 Норвегия
866 Россия


DOS, функция 67h
Установить число описателей файлов

Вход:

AH=67h
ВХ - максимальное число описателей (до FFFFh)

Выход:

CF=0, если функция выполнена успешно
CF=1, если при выполнении функции возникли ошибки
AX - код ошибки

Описание.

Эта функция устанавливает максимальное число описателей файлов,
которые могут быть открыты одновременно. Если значение ВХ меньше
20, то принимается 20. Если значение ВХ меньше текущего максимума
(нужно сократить число описателей), и в данный момент открыто более
чем ВХ файлов, то изменение будет иметь место, когда число открытых
файлов не будет превышать устанавливаемый максимум. Если ВХ боль-
ше текущего максимума (нужно увеличить число описателей), то DOS
должна иметь доступную память, чтобы распределить ее под новые опи-
сатели. Функция 4Ah позволяет освободить память, чтобы она стала
доступной DOS.

Версии: DOS 3.30 и выше.


DOS, функция 68h
Завершить файл

Вход:

AH=68h
ВХ - описатель завершаемого файла

Выход:

CF=0, если функция выполнена успешно
CF=1, если при выполнении функции возникли ошибки
AX - код ошибки

Описание.

Эта функция заставляет DOS сбросить (записать на диск) буфера ос-
новной памяти для указанного описателя файла. DOS обычно избегает
обмена с дисками, записывая данные в буфера в основной памяти до
заполнения сектора или закрытия файла. Эта функция заставляет DOS
немедленно записать данные на диск. Это ускоряет операции с базами
данных, позволяя приложению избежать неэффективного закрытия
и повторного открытия файлов.

Версии: DOS 3.3 и выше. В версиях DOS от 2.0 до 3.2 можно использо-
вать функцию DOS 45h, чтобы создать и затем закрыть дубликат.

Сайт создан в системе uCoz