3.2.2 Формирование адреса в процессорах Intel
Память для процессоров Intel подразделяется на байты (8 бит), слова (16 бит), двойные слова (32 бит). Более крупными единицами являются страницы и сегменты. Память может логически организовываться в виде одного или множества сегментов переменной длины. Применительно к памяти различают три адресных пространства: логическое, линейное и физическое.
Логический адрес или виртуальный адрес (рис 3.3) состоит из селектора и смещения. Смещение формируется суммированием компонентов (base, index, disp) в эффективный адрес.
Рисунок 3.3 - Формирование адреса 32-разрядных процессоров
В машинах с универсальных регистрами метод адресации данных в команде может устанавливать константу, регистр или ячейку памяти. При обращении к ячейке памяти процессор сначала должны вычислить эффективный адрес памяти, который задается данным в команде методом адресации.
В данном обзоре рассматриваются 11 режимов адресации процессора 80386. Два режима адресации предназначены для обращения к содержимому одного из регистров процессора или для задания операнда непосредственно в команде. Операнды могут иметь размер 8,16 или 32 бита.
Линейный адрес состоит из двух компонент: базового сегмента и эффективного адреса. Исполнительный адрес формируется сложением любой комбинации следующих четырех элементов адреса:
Смещение (offset): 8- или 32-разрядных значением, непосредственно задаваемым в команде;
База (Base): содержимое одного из универсальных регистров. Базовые регистры обычно используются транслятором как начало отметки локальной области памяти;
Индекс (Index): содержимое одного из универсальных регистров. Индексные регистры обычно используются для доступа к элементам массива или строки;
Масштаб (Scale): значение индексного регистра может быть умножено на коэффициент масштабирования 1 2, 4 или 8, использование которого определено в специальном байте поля команды;
В общем случае исполнительный (физический) адрес (EA) операнда определяется следующей формулой:
ЕА = Base + (Index*Scale) + Offset
Обычно в компьютерах одновременно используется несколько типов адресации. В команде тип адресации может задаваться либо неявно кодом операции, либо в явной форме в специальном поле адресной части команды.
3.3 Порядок выполнения работы
1 Студенты должны внимательно прочитать информационную часть работы, выяснить причины использования таких понятий как подразумеваемый операнд и подразумеваемый адрес, ознакомиться с методами адресации данных в компьютерах.
2 Получить задание у преподавателя либо выбрать вариант задания из табл. 3.1.
Таблица 3.1 - Задания к лабораторной работе №3
-
Номер варианта
Методы адресации
1
Прямой
Индексный с масштабированием
Базово индексный со смещением и масштабированием
2
Регистровый косвенный
Базово индексный
Базово индексный со смещением
3
Индексный
Базово индексный Базово индексный с масштабированием
4
Регистровый косвенный
Индексный с масштабированием
Базово индексный с масштабированием
5
Индексный
Базово индексный с масштабированием
Базово индексный со смещением
6
Прямой
Базово индексный
Базово индексный со смещением и масштабированием
7
Базовый
Регистровый косвенный
Базово индексный с масштабированием
8
Базовый
Индексный с масштабированием
Базово индексный со смещением и масштабированием
9
Индексный
Базово индексный с масштабированием
Базово индексный со смещением
10
Прямой
Базово индексный
Базово индексный со смещением и масштабированием
3 Перейти в раздел Схема адресации, ссылка на который приведена в конце информационной части методических указаний. Выписать зависимости для формирования линейного адреса (LA) трех режимов адресации в соответствии с заданием и нарисовать для них схемы формирования LA .
4 Перейти в раздел Моделирование и выполнить следующие процедуры:
выбрать размер данных BYTE;
в соответствии с формулой вычисления LA наберите числовые данные в окнах Адрес сегмента, Размер сегмента, Смещение и т.д.;
постройте таблицу для рассматриваемого метода адресации и заполните первую строку. Вид таблицы представлен в табл. 3.2
в окошке размер данных установите WORD и наберите те же числовые данные, что и для первой строки. Полученное значение линейного адреса и значения параметров занесите во вторую строку таблицы;
в отчете должны быть приведены три рисунка схем формирования линейного адреса и три таблицы.
Таблица 3.2 - Формирование линейного адреса
№ п/п |
Размер операнда |
Адрес сегмента |
Размер сегмента |
Смещение |
Базовый адрес |
Индекс |
Масштаб |
Линейный адрес |
1 |
BYTE |
2 |
50 |
20 |
10 |
5 |
1 |
|
2 |
WORD |
2 |
50 |
20 |
10 |
5 |
|
|
3 |
|
|
|
|
|
|
|
|
Примечание: в том случае, когда в формуле формирования линейного адреса участвует параметр масштабирования (Scale) для каждого размера операнда необходимо получить дополнительные значения LA для значений параметра Масштаб 1, 2, 4 и 8.