Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
госы / Организация ЭВМ и систем.docx
Скачиваний:
62
Добавлен:
10.04.2015
Размер:
418.39 Кб
Скачать

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

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

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

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

Длина команд с прямой адресацией велика и может составлять несколько машинных слов. Если используется трёхадресная система команд (см. рисунок ), то её длина составит nКОП + nA1 + nA2 + nР. При ёмкости ОП равной 4 Гбайт длина одного адресного поля составит 32 разряда, а длина команды соответственно будет состоять как минимум из 13 байтов.

КОП

А1

А2

Ap

nA1

nA2

np

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

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

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

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

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

При косвенной адресации в адресной части команды указывается адрес

ячейки памяти, в которой находится адрес операнда (косвенная адресация - это адресация адреса). Косвенный адрес обычно хранится во внутренней памяти процессора, состоящей из регистров общего назначения, разрядность которых достаточна для перекрытия адресного пространства памяти.

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

Команда с косвенной адресацией является укороченной, поэтому часто используется в микропроцессорах и микроконтроллерах, имеющих малую разрядность. Она позволяет при малой длине разрядной сетки перекрывать всё адресное пространство оперативной памяти. Время выполнения команды достаточно велико, т.к. для формирования адреса операнда требуется как минимум два машинных цикла: 1-й для выборки косвенного адреса, второй - для выборки операнда по этому адресу. ////?????

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

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

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

КОП

Операнд

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

Неявная (подразумеваемая) адресация является модификацией регистровой адресации. В команде нет явных указаний на адреса операндов, они подразумеваются, поскольку заключены непосредственно в коде операции команды. Такая команда является самой короткой. Используется в простейших микропроцессорах и микроконтроллерах. На следующем рисунке представлен формат двухадресной команды.

ЧастьКОП

Операнд

Часть КОП R1 R2

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

Относительная (базовая) адресация

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

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

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

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

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

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

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

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

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

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

  • индексная адресация с шагом. Содержимое индексного регистра умножается на шаг и суммируется со смещением- EA=[X]T+D, где Т - величина шага;

  • базово - индексная адресация EA=[В]+[X];

  • базово - индексная адресация с шагом EA=[В]+[X]Т;

  • базово - индексная адресация со смещением EA=[В]+[X]+D:

  • базово - индексная адресация со смещением и шагом EA=[В]+[X]Т+D.

Соседние файлы в папке госы