Системное программное обеспечение. Рощин А.В. - 58 стр.

UptoLike

Составители: 

58
Функция 46h: Переназначить дескриптор (FORCDUP)
Вход AH = 46h
BX = целевой дескриптор файла (уже должен существовать)
CX = исходный дескриптор файла (уже должен уже существовать)
Выход AX = код ошибки, если CF установлен
Описание
: Заставляет дескриптор файла (handle) ссылаться на другой файл
или устройство. Дескриптор в CX (источник) закрывается, если он открыт,
а затем становится дубликатом дескриптора в BX (назначения). Иными
словами, дескрипторы в CX и BX будут ссылаться на один и тот же
физический файл или устройство. Используется для переназначения
стандартного устройства ввода/вывода. Пример: Откроем файл
"C:\STDOUT.TXT" через
функцию 3dh Open File и получим дескриптор
(например, 05). Установим BX=05, CX=01 и вызовем эту функцию.
(Замечание: дескриптор 01 – это предопределенный дескриптор
"стандартного выходного устройства"). Теперь можно вызвать функцию
3eh Close File и закрыть handle 05. Можно обращаться к файлу
STDOUT.TXT через дескриптор 01. Стало быть, дисковый файл
"C:\STDOUT.TXT" будет отныне получать весь вывод, создаваемый всеми
процессами (текущим и порожденными), через любую
функцию
символьного ввода/вывода DOS, так же, как и любой вывод в дескриптор
файла 01 через функцию DOS 40h. Когда вы выходите в COMMAND.COM,
предопределенные дескрипторы устанавливаются на обычные устройства
(например, дескриптор 01 устанавливается на "CON").
Функция 47h: Дать текущий каталог DOS
Вход AH = 47h
DS:SI = адрес буфера для указания пути (64 байта)
DL = номер диска (0 = текущий, 1 = A, и т. д.)
Выход AX = код ошибки
, если CF установлен
Описание
: В пользовательский буфер по адресу DS:SI помещается в форме
ASCIIZ путь текущего каталога для диска, указанного в DL. Путь
возвращается в формате: "путь\каталог",0. Впереди не подставляется
буквенное обозначение диска, а сзади не подставляется символ "\".
Например, если текущим является корневой каталог, эта функция вернет
вам пустую строку (DS:[SI] = 0).
Функция 48h: Распределить память (дать размер
памяти)
Вход AX = 48h
BX = размер запрашиваемой памяти в параграфах
Выход AX = сегментный адрес распределенного блока (если нет
ошибок). При ошибке: AX = код ошибки, если установлен CF
BX = размер доступной памяти в параграфах (если памяти не
хватает)
                                  58




Функция 46h: Переназначить дескриптор (FORCDUP)
Вход AH = 46h
      BX = целевой дескриптор файла (уже должен существовать)
      CX = исходный дескриптор файла (уже должен уже существовать)
Выход AX = код ошибки, если CF установлен
Описание: Заставляет дескриптор файла (handle) ссылаться на другой файл
или устройство. Дескриптор в CX (источник) закрывается, если он открыт,
а затем становится дубликатом дескриптора в BX (назначения). Иными
словами, дескрипторы в CX и BX будут ссылаться на один и тот же
физический файл или устройство. Используется для переназначения
стандартного устройства ввода/вывода. Пример: Откроем файл
"C:\STDOUT.TXT" через функцию 3dh Open File и получим дескриптор
(например, 05). Установим BX=05, CX=01 и вызовем эту функцию.
(Замечание: дескриптор 01 – это предопределенный дескриптор
"стандартного выходного устройства"). Теперь можно вызвать функцию
3eh Close File и закрыть handle 05. Можно обращаться к файлу
STDOUT.TXT через дескриптор 01. Стало быть, дисковый файл
"C:\STDOUT.TXT" будет отныне получать весь вывод, создаваемый всеми
процессами (текущим и порожденными), через любую функцию
символьного ввода/вывода DOS, так же, как и любой вывод в дескриптор
файла 01 через функцию DOS 40h. Когда вы выходите в COMMAND.COM,
предопределенные дескрипторы устанавливаются на обычные устройства
(например, дескриптор 01 устанавливается на "CON").
Функция 47h: Дать текущий каталог DOS
Вход AH = 47h
     DS:SI = адрес буфера для указания пути (64 байта)
     DL = номер диска (0 = текущий, 1 = A, и т. д.)
Выход AX = код ошибки, если CF установлен
Описание: В пользовательский буфер по адресу DS:SI помещается в форме
ASCIIZ путь текущего каталога для диска, указанного в DL. Путь
возвращается в формате: "путь\каталог",0. Впереди не подставляется
буквенное обозначение диска, а сзади не подставляется символ "\".
Например, если текущим является корневой каталог, эта функция вернет
вам пустую строку (DS:[SI] = 0).
Функция 48h: Распределить память (дать размер памяти)
Вход AX = 48h
     BX = размер запрашиваемой памяти в параграфах
Выход     AX = сегментный адрес распределенного блока (если нет
          ошибок). При ошибке: AX = код ошибки, если установлен CF
          BX = размер доступной памяти в параграфах (если памяти не
          хватает)