Научная литература
booksshare.net -> Добавить материал -> Физика -> Александров Е.К. -> "Микропроцессорные системы" -> 107

Микропроцессорные системы - Александров Е.К.

Александров Е.К., Грушвицкий Р.И., Купрянов М.С., Мартынов О.Е. Микропроцессорные системы — Спб.: Политехника, 2002. — 935 c.
ISBN 5-7325-0516-4
Скачать (прямая ссылка): mikroprocessorniesistemi2002.djvu
Предыдущая << 1 .. 101 102 103 104 105 106 < 107 > 108 109 110 111 112 113 .. 528 >> Следующая

CS, IP (младшие 16 разрядов содержимого EIP);
• в регистре EFLAGS устанавливаются значения битов IF = TF = 0;
• из таблицы прерываний, расположенной в начале адресуемой памяти
(начиная с адреса OOOOOOOOOOh), загружается вектор соответствующего
прерывания -новое содержимое CS и IP.
Если бит в таблице обслуживания прерываний TSS равен "1", то обработка
прерывания производится в защищенном режиме.
Если при VME = 1 значение поля IOPL < 3, то при обслуживании исключений
используется механизм виртуальных прерываний.
Вход процессора в режим виртуального 8086 можно осуществить в защищенном
режиме двумя способами.
1. Переключение на выполнение задач, которая имеет в TSS поле EFLAGS с
установленным битом VM = 1. При этом новая задача будет выполнять команды
процессоров 8086 и Р6 и формировать базовые адреса, как 8086. Отметим,
что переключение на задачу микропроцессора 80286 не может вызвать переход
в режим V86, так как при этом из TSS загружается только 16 младших
разрядов поля EFLAGS, в которые не входит бит VM.
2. Поступление команды IRET в ходе выполнения программы, которая имеет
высший уровень привилегий CPL = 0, если в загружаемом при этом из стека
содержимом регистра EFLAGS установлено значение бита VM=1. При других
уровнях привилегий команда IRET не будет изменять значения VM, т. е.
переход в режим V86 не реализуется.
Выход процессора из режима V86 может произойти только при обработке
прерываний или исключений. При этом возможны два варианта.
1. В результате прерывания происходит переход на процедуру с высшим
уровнем привилегий, т. е. устанавливается CPL = 0. При этом текущее
состояние регистра EFLAGS заносится в стек, а бит VM сбрасывается в нуль.
Таким образом, вызванная процедура будет выполняться в защищенном режиме.
Если вызванная процедура имеет более низкий уровень привилегий (CPL > 0),
то происходит исключение типа #GP.
РАБОТА ПРОЦЕССОРА В ЗАЩИЩЕННОМ И РЕАЛЬНОМ РЕЖИМАХ
2. Прерывание вызывает переключение задачи. При этом в TSS старой
задачи, выполнявшейся в режиме V86, заносится текущее содержание
регистров, в том числе EFLAGS с установленным битом VM = 1. Таким
образом, имеется возможность вернуться к выполнению этой задачи в режиме
V86. Если загружаемый при переключении задач новый TSS является сегментом
32-разрядного процессора (386,486, Pentium или Р6) со значением бита VM=0
в поле EFLAGS, то признак VM в режиме EFLAGS сбрасывается в нуль, и
процессор будет выполнять новую задачу в защищенном режиме.
Отметим, что команда POPF не изменяет значение флага VM, даже если она
выполняется в защищенном режиме с наивысшим уровнем привилегий (CPL = 0).
Эта команда не обеспечивает переход процессора в режим V86.
Таким образом, процессоры семейства Р6 в режиме V86 могут не только
выполнять с более высокой производительностью программы, написанные для
8086, но и реализовывать новые прикладные программы, эффективно
использующие расширенные возможности этого семейства. Следует отметить,
что процессоры Р6 требуют для выполнения команд значительно меньше
машинных тактов, чем 8086. Поэтому при реализации программных задержек на
этих процессорах могут возникнуть значительные расхождения во времени по
сравнению с реализацией на 8086.
2.7.6. ФУНКЦИОНИРОВАНИЕ ПРОЦЕССОРА В РЕАЛЬНОМ РЕЖИМЕ
В реальном режиме процессор выполняет программы, написанные для
микропроцессоров 8086 (или 8088) и для реального режима микропроцессоров
80286, 80386. С точки зрения программиста, процессор Р6 в реальном режиме
представляет собой более быстрый процессор 8086 с расширеным набором
команд и регистров. При работе в реальном режиме все процедуры
выполняются с наиболее высоким уровнем привилегий (CPL = 0) в отличие от
процедур в режиме V86, для которых устанавливаются низший уровень
привилегий (CPL = 3).
В реальном режиме процессор выполняет весь набор команд, за исключением
команд управления ARPL, LAR, LSL, STR, LTR, SLDT, LLDT, VERR, VERW. При
поступлении этих команд, которые оперируют с дескрипторами сегментов,
реализуется исключение типа #UD ("неправильный код операции").
При работе в данном режиме процессор не обращается для формирования
адресов к дескрипторам сегментов, а использует для образования базового
адреса сегмента значение селектора, расположенного в соответствующем
регистре CS, SS, DS, ES, FS или GS. Формирование физического адреса в
реальном режиме иллюстрирует рис. 2.55.
Базовый адрес сегмента имеет 20 разрядов и образуется путем сдвига 16-
разрядного селектора (содержимого регистра CS, SS, DS, ES, FS или GS)
влево на 4 разряда. Размеры сегментов фиксированы и составляют 64 Кбайт.
Допускается взаимное наложение сегментов. Линейный адрес, образованный в
результате суммирования базового адреса и селектора, служит физическим
адресом для выбора байта, так как в реальном режиме страничная
организация не реализуется. Если полученный физический адрес выходит за
границу адресуемой в реальном режиме памяти (1 Мбайт), то выполняется
Предыдущая << 1 .. 101 102 103 104 105 106 < 107 > 108 109 110 111 112 113 .. 528 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

Есть, чем поделиться? Отправьте
материал
нам
Авторские права © 2009 BooksShare.
Все права защищены.
Rambler's Top100

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed