Версии: DOS 2.00 и выше. DOS, функция 46h Переназначить описатель
Вход:
AH=46h
BX – целевой описатель файла (должен уже существовать)
CX – исходный описатель файла (должен уже существовать)
Выход:
CF=0, если функция выполнена успешно
CF=1, если при выполнении функции возникли ошибки
AX – код ошибки
Описание. Заставляет описатель файла (handle) ссылаться на другой файл или устройство. Если описатель в CX (источник) открыт, он закрывается, а затем становится дубликатом описателя в BX (назначения). Иными словами, описатели в CX и BX будут ссылаться на один и тот же физический файл или устройство.
Версии: DOS 2.00 и выше. DOS, функция 47h Получить текущее оглавление DOS
Вход:
AH=47h
DS:SI – адрес локального буфера для результирующего пути – 64 байта
DL – номер диска (0 – текущий, 1 – A и так далее)
Выход:
CF=0, если функция выполнена успешно
AX не сохранен
CF=1, если при выполнении функции возникли ошибки
AX – код ошибки
Описание. В буфер по адресу DS:SI помещается в форме ASCIZ путь текущего оглавления для диска, указанного в DL. Путь возвращается в формате: «путь\оглавление»,0. Впереди не подставляется буква диска, а сзади не подставляется символ «\». Например, если текущим является корневое оглавление, эта функция вернет пустую строку (DS: [SI]=0).
Версии: DOS 2.00 и выше. DOS, функция 48h Выделить память
Вход:
AH=48h
BX – запрошенное количество памяти в 16-байтных параграфах
Выход:
CF=0, если функция выполнена успешно
AX – сегментный адрес распределенного блока
CF=1, если при выполнении функции возникли ошибки
AX – код ошибки
BX – размер максимального доступного блока памяти (в параграфах)
Описание. Распределяет блок памяти длиной BX параграфов, возвращая сегментный адрес этого блока в AX (блок начинается с AX:0000). Если распределение неудачно, устанавливается флаг CF, в AX возвращается код ошибки, а BX содержит максимальный размер доступной для распределения памяти (в параграфах). Чтобы определить наибольший доступный блок, общепринято устанавливать BX=FFFFh перед вызовом. Распределение завершится с ошибкой, возвратив размер максимального блока памяти в BX.
Версии: DOS 2.00 и выше. DOS, функция 49h Освободить блок памяти
Вход:
AH=49h
ES – сегментный адрес освобождаемого блока памяти
Выход:
CF=0, если функция выполнена успешно
CF=1, если при выполнении функции возникли ошибки
AX – код ошибки
Описание. Освобождает блок памяти, начинающийся с адреса ES:0000. Этот блок становится доступным для других запросов системы. Вообще говоря, нужно освобождать лишь те блоки памяти, которые получены через функцию 48h (распределить память). Родитель отвечает за освобождение памяти порожденных процессов. Тем не менее, ничто не препятствует освобождать память чужих процессов.
Версии: DOS 2.00 и выше. DOS, функция 4Ah Изменить размер блока памяти
Вход:
AH=4Ah
ES – сегмент распределенного блока памяти
BX – нужный размер блока в 16-байтных параграфах
Выход:
CF=0, если функция выполнена успешно
CF=1, если при выполнении функции возникли ошибки
AX – код ошибки
BX – размер максимального доступного блока памяти (в параграфах)
Описание. Изменяет размер существующего блока памяти. Когда программа получает управление, функция 4Bh уже распределила блок памяти, начиная с PSP, который содержит всю доступную память. Чтобы освободить память для запуска порождаемых процессов, блок памяти, начинающийся с PSP, необходимо сначала сжать.
Примечание.
Функция 31h и INT 27h (TSR) сжимают блок по адресу PSP.
Версии: DOS 2.00 и выше.
DOS, функция 4Bh Выполнить или загрузить программу
Вход:
AH=4Bh
DS:DX – адрес строки ASCIZ с именем файла, содержащего программу
ES:BX – адрес EPB (блока параметров EXEC)
AL=00h – загрузить и выполнить
AL=01h – загрузить, но не выполнять
AL=03h – загрузить программный оверлей
Выход:
CF=0, если функция выполнена успешно
BX, DX не сохранены
CF=1, если при выполнении функции возникли ошибки
AX – код ошибки
Описание. Данная функция загружает в память и запускает программу, имя которой указано в регистрах DS:DX. Запущенная программа после завершения работы возвратит управление запускаемой. Если диск или путь не указаны, принимаются значения по умолчанию. ES:BX указывает на блок памяти, подготовленный как EPB, формат которого зависит от запрошенной подфункции в AL.
Версии: DOS 2.00 и выше. DOS, функция 4Ch Завершить программу
Читать дальше
Конец ознакомительного отрывка
Купить книгу