|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Структура записи в векторе прерываний
Для получения адреса обработчика прерывания № nh необходимо: 1) по номеру прерывания определить адрес первого байта «четверки» в векторе прерываний (он равен п*4); 2) выбрать 4 байта из 0 сегмента основной памяти, начиная с байта 4nh; 3) два последних байта поместить в регистр CS; 4) два первых байта поместить в счетчик команд IP. После этого начнет выполняться первая команда обработчика прерывания № nh. Таблица векторов прерываний используется не только для хранения адресов обработчиков прерываний, но и для указания на места хранения в ОП служебной информации. Для этой цели служат векторы прерываний IDh, lEh, IFh, 41h, 43h, 46h, 4Ah. Так, вектор IDh содержит адрес таблицы параметров видеосистемы (а не обработчика прерывания); вектор lEh - таблицы параметров дискет; вектор 1Fh- адрес знакогенератора адаптера CGA и т.д. Команда INT, кроме определения адреса обработчика прерываний, выполняет следующие действия: • сохраняет в стеке часть слова состояния процессора: (SP) < — (SP) - 2 (вершина стека) < - (регистр флагов) (SP) <— (SP) - 2 (вершина стека) <— (CS) (SP) <— (SP) - 2 (вершина стека) < — (IP) • сбрасывает флаги разрешения прерывания и трассировки: (IF) < — О (TF) <— О • заносит адрес точки входа обработчика прерываний в регистры CS.HIP: (CS) <— (номер прерывания * 4 + 2) (IP) < — (номер прерывания * 4) Команда INT относится к парным командам - каждый обработчик прерывания заканчивается командой IRET (возврат из прерывания). По команде IRET (без параметров) выполняются следующие действия: (IP) < — (вершина стека) (SP) <— (SP) +2 (CS) <— (вершина стека) (SP) < — (SP) + 2 (регистр флагов) < — (вершина стека) (SP) < — (SP) + 2 Каждый обработчик прерываний BIOS и DOS (Windows) может выполнять несколько различных функций. В команде INT никак не определяется, какую именно функцию должен выполнить обработчик прерываний. Поэтому перед обращением к команде INТ в регистры микропроцессора должна быть занесена информация, определяющая, какую функцию необходимо выполнить. Например, по команде INT I3h могут быть выполнены следующие функции: 00h — сброс дисковой системы; 0lh — определение состояния дисковой системы (успешное завершение, некорректная команда, не найдена адресная метка и т.д.)| 02h — чтение секторов в основную память; 03h — запись секторов из основной памяти; 04h — контроль секторов (есть ошибка — нет ошибки); 05h — форматирование дорожки; 06h — для жесткого диска — форматирование дорожки с установкой флагов плохих секторов; 07h — для жесткого диска — форматирование диска, начиная с указанной дорожки; 08h — определение типа и текущих параметров диска и т.д. Нужно иметь в виду, что одни и те же номера функций могут обозначать разные операции для различных устройств; некоторые функции отсутствуют в ранних версиях операционной системы, а некоторые — претерпели изменения в последующих версиях. При выполнении команды INT номер функции должен содержаться в регистре АН микропроцессора. Остальные регистры должны! включать необходимые для этой функции параметры. Например, для функции 02h остальные регистры микропроцессора должны содержать: AL — число читаемых секторов; СН — номер дорожки, на которой расположены читаемые сектора; CL — номер сектора; DH — номер головки; DL — номер дисковода; ES:BX — адрес буфера для чтения. В результате выполнения этой функции при возникновении ошибки флаг CF устанавливается в 1; в регистр AL заносится число считанных секторов, в регистр АН записывается код состояния, сформированный после окончания операции: 00 — успешное завершение; 01 — некорректная команда; 02 — адресная метка не найдена; … FF — сбой операции опроса (для жесткого диска). Кроме команд INT и IRET, в IBM PC с прерываниями работают! команды CLI (запрещение маскируемых прерываний) и STI (отмена запрета прерывания).
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.) |