
- •Системные регистры
- •Регистр gdtr
- •Регистр idtr
- •Регистр ldtr
- •Регистр ldtr
- •Регистр tr
- •Регистр управления cr0
- •Регистр управления cr2
- •Регистр управления cr3
- •Регистр управления cr4
- •Регистры отладки
- •Модельно-специфические регистры (msr)
- •Типы команд процессора p6.
- •Форматы команд процессора p6.
- •Понятия адреса и адресного пространства
- •Способы адресации операндов.
- •Inc esi –инкремент esi
- •Адресация операндов в памяти
- •Формирование адреса в защищенном режиме с 32 битной адресацией.
- •Лекция2 Плоская модель памяти.
- •Сегментная модель памяти.
- •Достоинства сегментации
- •Сегментация памяти в процессорах 8086
- •Эффект «закругления» или «заворачивания» адреса.
- •Недостатки сегментации в процессоре 8086.
- •Сегментация памяти в защищенном режиме.
- •Байт прав доступа
- •Дескрипторные таблицы.
- •Регистр idtr
- •Регистр ldtr
- •Селекторы сегментов.
- •Формирование линейного адреса.
- •Пример вычисления линейного адреса в защищенном режиме.
- •Кэширование дескрипторов в процессоре.
- •Дескрипторы псевдонимы
- •Страничная организация памяти.
- •Страничная память: виртуальная и физическая.
- •Одноэтапное преобразование линейного адреса в физический.
Понятия адреса и адресного пространства
Логический адрес и пространство логических адресов.
Логически программа разбивается на сегменты кода, стека, данных и другие. Сегмент представляет собой область памяти со смещенными адресами. Логический адрес состоит из двух компонент, указание сегмента и смещения внутри сегмента. Для локализации сегментов в ОП используются сегментные регистры.
Линейный адрес и линейное адресное пространство.
Линейное адресное пространство представляет множество возможных адресов, формируемых на шине адреса процессора. Разрядность адресной шины определяет диапазон линейных адресов.
Физический адрес и пространство физических адресов.
Для
8086 |
n=20 |
220=1Мбайт |
80286 |
n=24 |
224=16Мбайт |
80386 |
n=32 |
232=4Гбайт |
P6 |
n=36 |
236=16Гбайт |
Пространство линейных адресов
-
1
1
1
2n
1
1
0
……
0
0
1
0
0
0
|
…
|
|
n
1
0
шина адреса
Физический адрес – это адрес, выводимый процессором на внешнюю шину, который используется для адресации ячеек реально используемой физической оперативной памяти. При отключенном механизме страничной адресации физический адрес совпадает с линейным.
Устройство страничной адресации
ОП
л
Устройство сегментацииогич.
лин.
физ.
адрес
адрес
адрес
сегм:смещ
Способы адресации операндов.
Неявная адресация – операнд адресуется неявно, если в команде нет специальных полей для его определения, т.е. операнд задается кодом операции.
std – установка флага направления.
Регистровая адресация – операнд находится во внутреннем регистре процессора
Inc esi –инкремент esi
add al, dl- al = al+dl
Непосредственная адресация – операнд находится в самой команде, т.е. хранится вместе с командой в сегменте кода.
al, 0fh al=al&0fh
адресация ввода-вывода. Процессор поддерживает 64к адресов вв/выв, обычно называемых портами. Порт – это регистр внешнего устройства. Область вв/выв может быть разделена на 64к 8разрядных портов, 32к 16разрядных портов, 16к 32разядных портов. В командах вв/выв источником или приемником является EAX/AX/AL, а порт определяется как непосредственный операнд или содержимое регистра DX.
in al, 40 l
out 20h, ax
out dx, eax
Адресация операндов в памяти
Эффективный адрес(EA) – это смещение операнда от начала сегмента.
Прямая адресация – эффективный адрес находится в самой команде.
EA=DISP(d16/32)
mov al, ds[2]
Косвенная-регистровая адресация:
EA=BASE(BX/EBX)
EA=INDEX(SI/ESI,DI/EDI)
EA=mov ax, ds:[eax]
Базовая адресация:
EA=BASE(BX,BP) + DISP(d8,d16)
mov al,[BX+4]
Индексная адресация:
EA=INDEX(SI,DI) + DISP(d8,d16)
sub array[SI],2
Базово-индексная адресация:
EA=BASE(BX,BP) + INDEX(SI,DI)
mov ax, [bp+8][SI]
Базово-индексная адресация со смещением:
EA=BASE(BX,BP) + INDEX(SI,DI) + DISP(d8,d16)
mov ax, [bx+14h][DI]
Базово-индексная адресация со смещением и масштабированием (только в защищенном режиме с 32разрядной адресацией):
EA=BASE(POH) + INDEX(POH, кроме ESP)*F + DISP(d8,d32)
Inc word ptr [ebx+10h] [eax*2]
Стековая адресация:
PUSH – включение в стек
POP – извлечение из стека.