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

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