Читайте также: |
|
Программы-обработчики прерываний могут находиться в различных частях основной памяти (место их расположения в разных версиях операционной системы может быть различным). Для обеспечения совместимости программ под разными версиями DOS обращение к обработчикам прерываний осуществляется по их номерам.
Связь между номером прерывания и адресом основной памяти, соответствующим точке входа в обработчик прерывания, осуществляется через таблицу векторов прерываний, занимающую 1 Кбайт сегмента 0 основной памяти.
Поскольку адрес любого байта основной памяти определяется базовым адресом сегмента (2 байта) и смещением в сегменте (2 байта), вектор прерываний разделен на четверки байтов, имеющие структуру
Для получения адреса обработчика прерывания № nh необходимо:
· по номеру прерывания определить адрес первого байта “четверки” в векторе прерываний (он равен п*4);
· выбрать 4 байта из 0 сегмента основной памяти, начиная с байта 4nh;
· два последних байта поместить в регистр CS;
· два первых байта поместить в счетчик команд IP.
После этого начнет выполняться первая команда обработчика прерывания № nh.
Таблица векторов прерываний используется не только для хранения адресов обработчиков прерываний, но и для указания на места хранения в ОП служебной информации. Для этой цели служат векторы прерываний IDh, lEh, IFh, 41h, 43h, 46h, 4Ah. Так, вектор IDh содержит адрес таблицы параметров видеосистемы (а не обработчика прерывания); вектор lEh - таблицы параметров дискет; 1Fh - адрес знакогенератора адаптера CGA и т.д.
При выполнении команды INT номер функции должен содержаться в регистре АН микропроцессора. Остальные регистры должны включать необходимые для этой функции параметры. Например, для функции 02h остальные регистры микропроцессора должны содержать:
AL - число читаемых секторов;
СН - номер дорожки, на которой расположены читаемые сектора;
CL - номер сектора;
DH - номер головки;
DL - номер дисковода;
ES:BX - адрес буфера для чтения.
В результате выполнения этой функции при возникновении ошибки флаг CF устанавливается в 1; в регистр AL заносится число считанных секторов, в регистр АН записывается код состояния, сформированный после окончания операции:
00 - успешное завершение;
01 - некорректная команда;
02 - адресная метка не найдена;
FF - сбой операции опроса (для жесткого диска).
Кроме команд INT и IRET в IBM PC, с прерываниями работают команды CLI (запрещение маскируемых прерываний) и STI (отмена запрета прерывания).
Дата добавления: 2015-07-11; просмотров: 117 | Нарушение авторских прав