Организация ЭВМ

Нетрудно подсчитать, что длина этой программы составляет 12 байт.

В процессорах с естественной адресацией длина программы и требуемый под нее объем памяти сокращается, однако система команд усложняется, так как для организации ветвления программ требуется специальные команды - условных и безусловных переходов. Первое обстоятельство оказалось сильнее и традиционные машины выполняются по второму способу.

2.5 Способы адресации операндов

В современных ЭВМ используется большое число способов адресации операндов. Рассмотрим наиболее часто используемые.

2.5.1 Прямая адресация

При прямой адресации адрес операнда указывается в адресной части команды. Поле адреса может быть одно, двух и трехадресным. Длина адресного поля nА должна быть такой, чтобы перекрывать все адресное пространство – nА=log2 M, где M-емкость памяти в байтах.

Рисунок 2.5.1- Порядок выборки операнда при прямой адресации

Формат одноадресной команды следующий:

 

КОП

Адрес операнда

Формат двухадресной команды:

 

КОП

А1

А2

   

nA1

nA2

Формат трехадресной команды:

 

КОП

А1

А2

Ap

   

nA1

nA2

np

где Aр- адрес результата.

Размер команд, использующих прямую адресацию – большой, поэтому выполняется они достаточно медленно.

2.5.2 Косвенная адресация

При косвенной адресации в адресной части команды указывается адрес ячейки памяти (ОЗУ или СОЗУ) в которой находится адрес операнда (косвенная адресация - это адресация адреса).

Рисунок 2.5.2- Порядок выборки операнда при косвенной адресации: а- при адресации через ОП; б- при адресации через СОЗУ

Такая адресация используется в машинах, имеющих малую разрядность, то есть в мини и микро- ЭВМ. Для адресации операнда требуется как минимум два шинных цикла: 1-й для выборки адреса, второй - для выборки операнда по этому адресу. Часто косвенный адрес хранится во внутренней памяти процессора, состоящей из регистров двойной длины.

2.5.3 Регистровая адресация

Регистровая адресация является укороченной. В поле адреса указываются адреса ячеек сверхоперативной памяти (СОЗУ), число которых невелико. Такой способ адресации позволяет сократить длину команды и увеличить скорость выполнения операции, так как СОЗУ является быстродействующей памятью, выполняемой на быстрых регистрах. Эти регистры являются частью процессора и называются регистрами общего назначения (РОН). Следующий рисунок поясняет порядок выборки операндов при использовании 2- х адресной команды: R1- адрес первого операнда, R2- - адрес второго операнда.

Рисунок 2.5.3- Порядок выборки операндов при регистровой адресации: R1- адрес 1-го операнда, R2- адрес второго операнда

2.5.4 Непосредственная адресация

В поле адреса команд находится не адрес, а сам операнд. В этом случае нет необходимости обращаться за операндом в память. Используется для хранения констант.

Непосредственный операнд может иметь любую длину (байт, слово, 2-е слово). Этим определяется длина команды. Формат команды при непосредственной адресации следующий:

КОП

Непосредственный операнд

2.5.5 Неявная адресация

Неявная (подразумеваемая) адресация. В команде нет явных указаний об адресе операнда, они подразумеваются, но фактически их адреса указаны в КОП команды. Это самая короткая адресация. Используется в микроЭВМ.

2.5.6 Относительная адресация

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

Рисунок 2.5.6-Формирование адреса операнда при относительной адресации

Полученный адрес EA=[B]+D называется эффективным или исполнительным адресом. Прямые скобки при B ([B]) – означают, что первое слагаемое EA берется по адресу В. При выборке некоторого участка данных базовый адрес является неизменным. Адресация ячеек памяти относительно базового адреса осуществляется полем смещения.

Относительная адресация обеспечивает перемещаемость программ, то есть возможность передвижения программ в памяти без изменений внутри самой программы, что не требует перетрансляции программы. Для назначения новых адресов, изменяется только значение В

2.5.7 Индексная (автоинкрементная и автодекрементная ) адресация

При обработке больших массивов данных, выбираемых последовательно друг за другом, нет смысла каждый раз обращаться в память за новым адресом. Для этого достаточно автоматически менять содержимое специального регистра, называемого индексным, чтобы выбирать последовательно размещенные данные. Индексный регистр является косвенным. Его загружают начальным адресом массива (специальной командой). Дальнейшая адресация осуществляется путем автоматического добавления или вычитания единицы или шага адреса из его содержимого.

Рисунок 2.5.7- Формирование адреса операнда при индексной адресации

В некоторых процессорах применяют более сложную адресацию, которая сочетает индексную адресацию с базовым смещением.

Часто в команду с индексной адресацией включают признак, определяющий шаг индексации Т (Т=1,2,4 и т.д.), что позволяет осуществлять адресацию массивов через байт, слово, двойное слово и т.д.

В современных процессорах (например в Intel 80386 и выше ) применяют все возможные сочетания из базового адреса, индексного адреса, относительного адреса и шага. Например:


Страница: