Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 3000544.doc
Скачиваний:
26
Добавлен:
30.04.2022
Размер:
14.75 Mб
Скачать

Прерывания

В процессоре 80286 можно размещать таблицу векторов прерывания в произвольном месте, а не только в начале памяти. Для указания места размещения таблицы векторов прерывания имеется специальный видимый регистр IDTR (регистр дескрипторной таблицы прерываний). Он определяет начало и размер таблицы векторов прерывания.

Базовый адрес

Размер сегмента

IDTR

Регистр состояния задачи

Для организации многозадачной работы в состав процессора входит регистр состояния задачи. В обычном режиме он не доступен. Этот регистр содержит селектор сегмента состояния задачи. В защищенном режиме он доступен для чтения и записи.

Некоторые особенности функционирования

В адресном пространстве ввода-вывода для использования сопроцессором зарезервирована область 00F8 - 00FF. В защищенном режиме инструкции ввода-вывода являются привилегированными, т.е. они могут исполняться задачами только с определенным уровнем привилегий, определяемым одним из полей регистра флагов.

Набор и обработка исключений реального и защищенного режимов различны. Под исключения Intel резервирует векторы 0-31 в таблице прерываний, однако в PC часть из них перекрывается системными прерываниями BIOS и DOS. Адрес программы обслуживания прерывания определяется по таблице с помощью 8-битного номера вектора прерывания. Номер вектора для программных прерываний задается командой, для маскируемых прерываний вводится от внешнего контроллера во втором цикле INTA#, немаскируемое прерывание имеет фиксированный вектор, а исключения генерируют и передают номер вектора внутри процессора.

Каждому номеру прерывания соответствует элемент в таблице дискрипторов прерываний IDT (Interrupt Discriptor Table). В реальном режиме таблица прерываний организована как 8086. Она содержит дальние адреса программ обслуживания и после сброса располагается начиная с нулевых адресов. Однако инструкцией можно изменить ее положение в пределах 1Мбайта. В защищенном режиме таблица может находиться в любом месте физической памяти.

После аппаратного сброса процессор переходит в реальном режиме к выполнению команды по физическому адресу FFFFF0h, при этом устанавливаются следующие значения регистров: CS=F000h, IP=FFF0h, DS=SS=ES=0000h. Только после сброса и до первой команды межсегментного перехода или вызова (подпрограммы) в реальном режиме на шине адреса биты A[20-23] в цикле выборки команд имеют значение "1". Таким образом, ROM BIOS (играющий роль начального аппаратного загрузчика) должен располагаться по адресам FFFFF0h - FFFFFFh. В то же время для 8086 ROM BIOS располагалась под границей FFFFFh. В реальном режиме векторы прерываний, ссылающиеся на BIOS, также могут адресоваться в диапазоне адресов 0 - FFFFFh. Поэтому на процессоре 80286 (и старше) ROM BIOS отображается по крайней мере на две области памяти, расположенных под первым и последним мегабайтом адресуемой физической памяти.

Система команд 80286 расширена по сравнению с 8086. Вследствие сложности системы команд программирование целесообразно вести на языке Ассемблер или использовать языки более высокого уровня. Это позволит воспользоваться инструментарием BIOS и операционных систем.