- •Лекция 15
- •Режимы работы процессора
- •Базовая среда выполнения
- •Базовая среда выполнения
- •Базовая среда выполнения
- •Базовая среда выполнения
- •Дополнительные
- •Дополнительные
- •Организация памяти
- •Модели памяти
- •Модели памяти
- •Модели памяти
- •Модели памяти
- •Модели памяти
- •Регистры базовой среды
- •Регистры общего
- •Регистры общего
- •Сегментные регистры
- •Регистр флагов
- •Счетчик команд
- •Адресация операндов
- •Непосредственные
- •Регистровые операнды
- •Ячейка памяти
- •Ячейка памяти
- •Ячейка памяти
- •Ячейка памяти
- •Адресация портов
Модели памяти
Плоская модель памяти:
память представляется для программы как одно непрерывное адресное пространство, называемое линейным адресным пространством.
Код, данные и стек находятся этом пространстве.
Линейное адресное пространство состоит из байт, а диапазон адресов от 0 до 2^32-1.
Линейный адрес
Линейное
адресное
пространство
Модели памяти
Сегментная модель памяти:
память представляется для программы как группа независимых адресных пространств, называемых сегментами.
Код, данные и стек обычно содержатся в различных сегментах. Для адресации байта в сегменте программы использует логический адрес, состоящий из селектора сегмента и смещения внутри сегмента.
Внутренне все сегменты, которые определены в системе, отображаются в линейное адресное пространство. Для получения доступа процессор транслирует логический адрес в линейный.
Модели памяти
Сегменты
Смещение
Сегмент
Линейное адресное пространство
Модели памяти
Адресация |
|
в |
реальном |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
режиме: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
S |
|
S |
S |
|
S |
0 |
|
|
|||||
это |
наиболее |
старая |
|
|
|
|
|
||||||||||||
+ |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
модель |
памяти, |
которая |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
является |
|
основной |
(и |
|
|
|
|
|
O |
O |
|
O |
O |
|
|
||||
единственной) |
моделью |
для |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
8086 процессора. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
A |
|
A |
A |
|
A |
A |
|
|
|||||||
Эта модель |
похожа |
на |
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
сегментную модель, но в этой |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
модели |
используются |
16- |
|
|
|
|
Смещение |
|
|
|
|
|
|||||||
разрядные |
|
смещения, |
а |
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
максимальный размер сегмента |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
– 64Кб. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Сегмент |
|
|
|
|
|
|
|||
Максимальный |
размер |
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
линейного |
|
|
адресного |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
пространства |
в |
этом |
режиме |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
составляет 2^20 (1 Мб).
Регистры базовой среды
выполнения
В архитектуре IA-32 предусмотрено 16 основных регистров, используемых обычно при разработке программ. Все эти регистры делятся на следующие группы:
регистры общего назначения,сегментные регистры,регистр флагов,счетчик команд.
Регистры общего
назначенияРегистры общего назначения используются для хранения:
операндов логических и арифметических операций;
операндов для вычисления адреса;
указателей в памяти.
31 |
16 15 |
8 7 |
0 |
16 bit |
32 bit |
||
|
|
|
|
|
|
|
|
|
|
|
AH |
|
AL |
AX |
EAX |
|
|
|
|
|
|
|
|
|
|
|
BH |
|
BL |
BX |
EBX |
|
|
|
|
|
|
|
|
|
|
|
CH |
|
CL |
CX |
ECX |
|
|
|
|
|
|
|
|
|
|
|
DH |
|
DL |
DX |
EDX |
|
|
|
|
|
|
|
|
|
|
|
BP |
|
|
EBP |
|
|
|
|
|
|
|
|
|
|
|
|
SI |
|
|
ESI |
|
|
|
|
|
|
|
|
|
|
|
|
DI |
|
|
EDI |
|
|
|
|
|
|
|
|
|
|
|
|
SP |
|
|
ESP |
|
|
|
|
|
|
|
|
|
Регистры общего
назначенияEAX – аккумулятор, хранение результата
EBX – указатель на данные в сегменте DS
ECX – счетчик для строковых операций и циклов
EDX – I/O указатель, данные
ESI – указатель на данные в сегменте DS, источник в строковых операциях
EDI – указатель на данные в сегменте ES, назначение в строковых операциях
ESP – указатель в стеке (сегмент SS).
EBP – указатель на данные в сегменте стека (сегмент SS).
Сегментные регистры
В архитектуре IA-32 предусмотрено шесть 16- ти разрядных сегментных регистра. Это:
CS – сегмент кода,DS – сегмент данных,
ES – дополнительный сегмент данных,FS – сегмент данных (386+),
GS – сегмент данных (386+),SS – сегмент стека.
Регистр флагов
31 |
... |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
… |
0 |
I |
V |
V |
A |
V |
R |
0 |
N |
IOPL |
O |
D |
I |
T |
S |
Z |
0 |
A |
0 |
P |
1 |
C |
|
|
|
|
D |
I |
I |
C |
M |
F |
|
T |
|
|
F |
F |
F |
F |
F |
F |
|
F |
|
F |
|
F |
|
|
|
|
P |
F |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CF – флаг переноса (1 – был перенос старшего разряда при выполнении арифметической операции, 0 – переноса не было)
PF – флаг паритета (1 – в младших 8-ми разрядах результата четное количество единиц, 0 – нет)
AF – дополнительный флаг переноса (1 – был перенос 3-го разряда, 0 – переноса не было), используется при арифметике BCD чисел.
ZF – флаг нуля (1 – результат равен нулю, 0 – не равен нулю).SF – флаг знака (дублирует старший разряд результата).
OF – флаг переполнения (1 – если был перенос из (в) разряд знака при выполнении арифметической операции, в противном случае – 0).
Счетчик команд
Регистр EIP (IP) – содержит смещение следующей команды в сегменте кода.
Программно доступен только для чтения.
Значение изменяется только с помощью команд управления.