Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
прерывания.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
353 Кб
Скачать
☆

3.3. Основные отличия r-режима старших моделей Intel 80x86 от Intel 8086

  1. Возможность использования расширенной системы команд.

2. Возможность использования расширенного набора регистров. Допускается использование регистров, отсутствующих в базовой модели Intel 8086, в частности: дополнительных сегментных регистров (FS и GS), регистров системных адресов GDTR и IDTR (но не LDTR и TR), регистров отладки (DR0-DR7), управляющего регистра CR).

3. Возможность использования 32-разрядных операндов. По умолчанию в R-режиме используются 8- и 16-разрядные операнды. Возможность использования 32-разрядных операндов обеспечивается наличием специального префикса OS – Operand Size перед командой.

4. Возможность использования 32-разрядных адресов обеспечивается за счет префикса AS – Address Size перед командой. Однако, при выходе адреса за пределы стандартного сегмента генерируется прерывание стандартного типа 13 «нарушение общей защиты, выход за пределы сегмента».

5. Возможность использования физических адресов, превышающих 1 Mбайт. Максимальное значение физического адреса, формируемое в R-режиме при максимальных значениях 16-разрядных компонент равно:

seg*16 F F F F 0

offset + 0 F F F F

(1 0 F F E F)16 = (1114095)10

Так как разрядность шины адреса – 32 или даже 36 бит, то в R-режиме возможна адресация за пределами 1 Mi байта памяти.

В процессоре Intel 8086 используется 20-разрядная шина адреса, в связи с чем при суммировании подобных компонент производится так называемое «заворачивание» адреса, поэтому для данного примера на шину адреса будет выставлен адрес (0FFEF)16.

3.4. Особенности организации прерываний в реальном режиме

3.4.1. Программные средства системы прерываний реального режима

К программным средствам системы прерываний реального режима относятся:

1) таблица векторов прерываний. Она занимает первый килобайт ОП (адреса 00000h-003FFh), содержит адреса (векторы - «векторы», т.к. два значения для указания адреса) обработчиков прерываний и состоит из 256 (0..255) элементов по 4 байта каждый:

- 2 байта – новое значение для регистра IP;

- 2 байта – новое значение для регистра CS.

Расположение таблицы векторов прерываний в процессорах i80286 и старше определяется значением регистра IDTR. Таблица векторов прерываний инициализируется при запуске системы, но в принципе может быть изменена и перемещена.

Каждый вектор имеет свой номер и называется номером прерывания.

2) два флага в регистре флагов flags/eflags:

– IF (Interrupt Flag) – флаг прерывания. Предназначен для маскирования (запрещения) аппаратных прерываний. Если IF = 1, микропроцессор обрабатывает внешние прерывания, если = 0, то игнорирует;

– TF(Trace Flag) – флаг трассировки. Если он = 1, то микропроцессор переходит в режим покомандной работы. В этом режиме в микропроцессоре генерируется внутреннее прерывание с номером 1;

3) машинные команды микропроцессора: int, into (прерывание по переполнению), iret, cli, sti