Мегаобучалка Главная | О нас | Обратная связь


Функция 25h: Установить вектор прерывания



2015-11-27 918 Обсуждений (0)
Функция 25h: Установить вектор прерывания 0.00 из 5.00 0 оценок




Вход AH = 25h

AL = номер прерывания

DS:DX = вектор прерывания: адрес программы обработки прерывания

Описание: Устанавливает значение элемента таблицы векторов прерываний для прерывания с номером AL равным DS:DX. Это равносильно записи 4-байтового адреса в 0000:(AL*4), но, в отличие от прямой записи, DOS здесь знает, что вы делаете, и гарантирует, что в момент записи прерывания будут заблокированы.

Внимание: Не забудьте восстановить DS (если необходимо) после этого вызова.

Функция 26h: Построить PSP

Вход AH = 26h

DX = адрес сегмента (параграфа) для нового PSP

CS = сегмент PSP, используемого как шаблон для нового PSP

Описание: Устанавливает PSP для порождаемого процесса по адресу DX:0000. Текущий PSP (100h байт, начиная с CS:0), копируется в DX:0. Соответственно корректируется поле MemTop. Векторы Terminate, Ctrl-Break и Critical Error копируются в PSP из векторов прерываний int 22h, int 23h и int 24h.

Функция 2ah: Дать системную дату

Вход AH = 2ah

Выход AL = день недели (0 = воскресенье, 1 = Понедельник,...)

CX = год (от 1980 до 2099)

DH = месяц (от 1 до 12)

DL = день (от 1 до 31)

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

Функция 2bh: Установить системную дату

Вход AH = 2bh

CX = год (от 1980 до 2099)

DH = месяц (от 1 до 12)

DL = день (от 1 до 31)

Выход AL = 0, если дата корректна

AL = 0ffh если дата некорректна

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

Функция 2ch: Дать системное время

Вход AH = 2ch

Выход CH = часы (от 0 до 23)

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

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

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

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

Замечание: Поскольку системные часы имеют частоту 18.2 тиков в секунду (интервал 55мс), DL имеет точность 0.04 сек.

Функция 2dh: Установить системное время

Вход AH = 2dh

CH = часы (от 0 до 23)

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

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

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

Выход AL = 0, если время корректно

AL = 0ffh если время некорректно

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

Функция 2eh: Установить/сбросить переключатель верификации

Вход AH = 2eh

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

AL = 1 включить верификацию

Описание: Устанавливает, должна ли DOS проверять каждый сектор, записываемый на диск. Это замедляет операции записи на диск, но дает некоторую гарантию при записи. Функция 56h Get Verify возвращает текущий статус верификации DOS.

Функция 2fh: Дать адрес текущей DTA

Вход AH = 2fh

Выход ES:BX = адрес начала текущей DTA

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

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

Функция 30h: Дать номер версии DOS

Вход AH = 30h

Выход AL = часть номера версии до точки

AH = часть номера версии после точки

BX,CX = 0000h DOS 3.0+

Описание: Возвращает в AX значение текущего номера версии DOS. Например, для DOS 3.2, в AL возвращается 3, в Ah - 2.

Замечание: Если в AL возвращается 0, можно предполагать, что работает DOS более ранней версии, чем DOS 2.0.

Функция 31h: Завершиться и остаться резидентным (KEEP)

Вход AH = 31h

AL = код возврата

DX = объем оставляемой резидентной части в параграфах

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

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

Вход AH = 33h

AL = 0 чтобы опросить текущий статус контроля Ctrl-Break

AL = 1 чтобы установить статус контроля Ctrl-Break

DL = требуемый статус (0=OFF, 1=ON) (только при AL=1)

Выход DL = текущий статус (0 = OFF, 1 = ON)

Описание: Если AL=0, в DL возвращается текущий статус контроля Ctrl-Break. Если AL=1, в DL возвращается новый текущий статус. Когда статус ON, DOS проверяет на Ctrl-Break с консоли для большинства функций (исключая 06h и 07h). При обнаружении, выполняется int 23h (если оно не перехватывается, то это снимает процесс). Когда статус OFF, DOS проверяет на Ctrl-Break лишь при операциях стандартного в/в, стандартной печати и стандартных операциях AUX.

Функция 35h: Дать вектор прерывания

Вход AH = 35h

AL = номер прерывания (от 00h до 0ffh)

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

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

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

Функция 36h: Дать свободную память диска

Вход AH = 36h

DL = номер диска (0=текущий, 1=A, и т.д.)

Выход AX = 0ffffh, если AL содержал неверный номер диска

АХ = число секторов на кластер, если нет ошибок

BX = доступных кластеров

CX = байт на сектор

DX = всего кластеров на диске

Описание: Возвращает данные для подсчета общей и доступной дисковой памяти. Если в AX возвращено 0ffffh, значит, вы задали неверный диск. Иначе, свободная память в байтах = (AX * BX * CX) всего памяти в байтах = (AX * CX * DX).

Функция 39h: Создать новый каталог (MKDIR)

Вход AH = 39h

DS:DX = адрес строки ASCIIZ с именем оглавления

Выход AX = код ошибки если CF установлен

Описание: DS:DX указывает на строку ASCIIZ в формате: "d:\путь\имя_каталога",0. Если диск и/или путь опущены, то берется каталог, принятый по умолчанию. Подкаталог создается и связывается с существующим деревом. Если при возврате, установлен флаг CF, то AX содержит код ошибки, и каталог не создается.

Функция 3ah: Удалить каталог (RMDIR)

Вход AH = 3ah

DS:DX = адрес строки ASCIIZ с именем оглавления

Выход AX = код ошибки, если установлен CF

Описание: DS:DX указывает на строку ASCIIZ в формате: "d:\путь\имя_каталога",0. Если диск и/или путь опущены, то берется каталог, принятый по умолчанию. Подкаталог удаляется из указанного каталога. Если при возврате, установлен флаг CF, то AX содержит код ошибки, и каталог не удаляется.

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

Функция 3bh: Установить текущий каталог DOS (CHDIR)

Вход AH = 3bh

DS:DX = адрес строки ASCIIZ с именем каталога

Выход AX = код ошибки, если установлен CF

Описание: DS:DX указывает на строку ASCIIZ в формате: "d:\путь\имя_каталога",0. Если диск и/или путь опущены, то берется каталог, принятый по умолчанию. Указанный подкаталог для указанного диска становится текущим каталогом DOS для этого (или текущего) диска. Если при возврате установлен флаг CF, то AX содержит код ошибки, и текущий каталог для выбранного диска не изменяется.

Функция 3ch: Создать файл через дескриптор

Вход AH = 3ch

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

CX = атрибут файла

Выход AX = код ошибки, если CF установлен

АХ = дескриптор файла, если ошибки нет

Описание: DS:DX указывает на строку ASCIIZ в формате: "d:\путь\имяфайла",0. Если диск и/или путь опущены, они принимаются по умолчанию. файл создается в указанном (или текущем) каталоге файл открывается в режиме доступа чтение/запись вы должны сохранить дескриптор (handle) для последующих операций, если файл уже существует:

· при открытии файл усекается до нулевой длины

· если атрибут файла - только чтение, открытие отвергается (атрибут можно изменить функцией 43h Изменить Атрибут)



2015-11-27 918 Обсуждений (0)
Функция 25h: Установить вектор прерывания 0.00 из 5.00 0 оценок









Обсуждение в статье: Функция 25h: Установить вектор прерывания

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (918)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.006 сек.)