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

Программная модель 32-разрядного мп.

    1. Программная модель 32 разрядного мп

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

Собственно говоря программная модель 32 разрядного процессора, с точки зрения пользователя, практически не отличается от программной модели МП 8086. Единственное существенное отличие состоит в том, что регистры МП 386 и выше 32-х разрядные (в МП 8086 регистры 16-ти разрядные). Кроме того в регистр флагов ( ef ) добавлен ряд новых флагов Подробно формат регистра ef будет рассмотрен в конце этого раздела. Поскольку программная модель МП 8086 рассмотрена ранее, мы здесь ограничимся рисунком программной модели 32 разрядного процессора ( см. рис. 69) без какого-либо ее описания.

Пользователь должен знать, что ему доступны не все команды . Некоторые команды в защищенном режиме выполняются только на 0-м уровне привилегий. Такие команды называются привилегированными. К ним относятся: lldt; lgdt; lidt; ltr; clts; mov cr , r; mov r , cr; mov dr , r; mov r , dr; mov tr , r; mov r , tr (и ряд других). Кроме того некоторые команды выполняются только если CPL<=IOPL. Такие команды называются чувствительными к уровню привилегий. К ним (в защищенном режиме) относятся команды in; out; ins; outs; cli; sti.

Далее на рис. 70 приводится форма регистра флагов ef:

Большинство флагов хорошо известны еще из МП 8086. Часть флагов было описано ранее. Осталось всего три еще не упоминавшихся флага: RF, AC и ID. Эти три флага мы далее рассмотрим подробно, а остальные просто перечислим.

CF - флаг переноса (см. раздел 2.6).

PF - флаг четности (см. раздел 2.6).

AF - флаг межтетрадного переноса (см. раздел 2.6).

ZF - флаг нулевого результата (см. раздел 2.6).

31 16

15 8

7 0

eax

ah

al

ax

ecx

ch

cl

cx

edx

dh

dl

dx

ebx

bh

bl

bx

esp

sp

ebp

bp

esi

si

edi

di

ef

f

eip

ip

Видимые части →{

es

cs

ss

ds

fs

gs

Рис. 69

SF - флаг отрицательного результата (флаг знака) (см. раздел 2.6).

TF - флаг трассировки (флаг «пошагового» выполнения программы) (см. раздел 2.6).

IF - флаг разрешения внешних прерываний (см. раздел 2.2).

DF - флаг направления. Задает автоинкремент или автодекремент регистров в «строковых» командах (см. раздел 2.6).

OF - флаг переполнения разрядной сетки (см. раздел 2.5).

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

-

nt

iopl

of

df

if

tf

sf

zf

-

af

-

pf

-

cf

31

22 21

20

19

18

17

16

резерв

id

vip

vif

ac

vm

rf

Рис. 70

IOPL (input-output privilege level fild)- это не флаг а двух битовое поле, задающее уровень привилегий операций ввода-вывода (см. раздел 3.11).

NT (nested task)- флаг вложенной задачи ( проверяется командой iret ) (см. раздел 3.14).

VM (virtual mode)- режим V86 (см. раздел 3.10).

RF (resume) - флаг рестарта (возврата). Внутри МП есть системные регистры отладки DRi . В этих регистрах мы можем задавать «контрольные точки останова». Когда МП вырабатывает адрес, совпадающий с такой точкой происходит прерывание типа 1. Обычно обработчик этого прерывания выводит на экран содержимое внутренних регистров МП. При возврате из обработчика происходит рестарт команды (только если контрольная точка задана «по команде», см. описание регистров dr в разделе 3.18). Однако при этом МП снова выработает тот же адрес и, так как «контрольная точка» не изменилась, снова будет то же самое прерывание. Во избежание подобной ситуации обработчик прерывания по контрольной точке должен либо сменить адрес контрольной точки в регистре dr, либо установить RF в единицу. При RF = 1 прерывание при рестарте будет заблокировано. После выполнения «виноватой» команды МП сбрасывает RF в ноль.

AC (alignment check)- флаг выравнивания. Если этот флаг установлен МП генерирует прерывание типа 17 при обращении к не выровненным в памяти данным (например при обращению к слову по нечетному адресу). Правда это прерывание генерируется если кроме установки флага АС выполняются еще два условия: текущий CPL = 3 и бит АМ в регистре cr0 установлен в единицу. Этот флаг появился в МП 486.

VIF (virtual interrupt) – виртуальный флаг прерываний (см. раздел 3.11).

VIP (virtual interrupt pending) – виртуальный флаг отложенного прерывания (см. раздел 3.11).

ID (identification) – если программа может изменять значение этого флага, значит процессор поддерживает команду cpuid. Эта команда возвращает сведения о процессоре.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]