Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Микропроцесоры_Ответы.docx
Скачиваний:
20
Добавлен:
17.03.2016
Размер:
1.98 Mб
Скачать

5.1.3. Повернення з переривів та підпрограм.

Возврат из прерывания осуществляется по команде IRET, которая ставится в конце обработчика прерывания. 

^ Операция прерывания осуществляется в следующем порядке: 1) содержимое регистров Flags, CS и IP процессора (старое ССП) помещается в стек; 2) сбрасываются (обновляются) биты IF и TF регистра флагов (IF=0 - маскирует внешние прерывания по входу INTR, TF=0 - запрещает трассировку, т. е. шаговый режим);

3) определяется причина (номер N) прерывания с наивысшим в данный момент времени приоритетом (арбитраж);

4) по номеру N из таблицы извлекается вектор прерываний (из ячеек памяти с адресами 4N и 4N+2) и загружается в регистры CS, IP (новое значение ССП). Тем самым передается управление подпрограмме обработки прерывания.

Возврат из обработчика прерывания осуществляется командой IRET, по которой из стека в обратном порядке выталкиваются три слова (старое ССП) и загружаются в регистры IP, CS, Flags соответственно.

Возврат из подпрограммы осуществляется по команде IRET. При выталкивании из стека старого значения регистра флагов учитываются условия:

  • поле IOPL восстанавливается только при условии CPL=0,

  • флаг маски IF изменяется только при условии CPL≤IOPL.

5.1.4. Сегментна організація пам’яті.

Сегментная организация виртуальной памяти состоит в том, что программа разбивается на логические элементы (например, блоки, процедуры) ─ так называемые сегменты разной длины, которые размещаются в памяти как до определенной степени самостоятельная единица. Логически обращение к элементам программы будет представляться как указание имени сегмента и смещения относительно начала этого сегмента. Физическое имя сегмента (его порядковый номер) будет соответствовать некоторому адресу, с которого этот сегмент начинается при его размещении в памяти, и смещение должно прибавляться к этому базовому адресу. Таким образом, адрес для этого способа состоит из двух полей: номер сегмента и смещение относительно сегмента. Каждый сегмент, размещаемый в памяти, имеет соответствующую информационную структуру, называемую дескриптором сегмента:

Старшее двойное слово дескриптора

31 23 19 15 11 7 0

База сегмента

(биты 31-24)

G

D

0

0

Биты 19-16 поля Limit

P

DPL

S

Type

A

База сегмента

(биты 23-16)

Базовый адрес сегмента (биты 15-0)

Байт прав доступа

Limit-размер (предел) сегмента (биты 15-0)

31 15 0

Первое (младшее) двойное слово дескриптора

Рис.1. Дескриптор сегмента

При переключении микропроцессора в защищенный режим он начинает совершенно другим образом, чем в реальном режиме, вычислять физические адреса команд и операндов. Прежде всего, содержимое сегментных регистров интерпретируется иначе: считается, что там содержится не адрес начала сегмента, а номер соответствующего сегмента. Каждый сегментный регистр (в этом случае его называют селектор сегмента) разбивается на три поля:

  1. поле индекса ─ старшие 13 битов (3-15). Определяют номер сегмента:

  2. поле индикатора таблицы сегмента ─ бит с номером 2. Определяет часть виртуального адресного пространства.

  3. поле уровня привилегий ─ биты 0 и 1. Указывает запрашиваемый уровень привилегий.