Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по практике ЭВМ и ПУ.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
11.64 Mб
Скачать

8.2 Способы адресации команд

8.2.1 Общие сведения

В ЭВМ используются несколько способов представления данных об операндах в адресной части команды, т.е. в адресную часть может быть записан не действительный адрес, по которому производится обращение к памяти, а его код. Порядок преобразования содержимого адресной части команды в действительный (абсолютный, исполнительный) адрес определяется способом (типом) адресации. Тип адресации в команде задается либо в поле КОП, либо выделением специального поля признака адресации (ПА). От типа адресации зависит количество адресов, доступных процессору (адресный диапазон). Основными типами адресации являются: прямая, непосредственная, косвенная и относительная.

8.2.2 Прямая адресация.

В адресную часть команды записывается исполнительный адрес. Количество адресов, которое можно получить при данном типе адресации, зависит от длины адресной части. Например, если под адресную часть отведено 12 разрядов, то адресный диапазон процессора при прямой адресации N=212=4096 адресов.

Примеры форматов команд с прямой адресацией показаны на рисунках 3, 4, 5. Прямая адресация используется в ЭВМ в комбинации с другими типами адресации.

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

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

КОП

ПА

Операнд

Рисунок 6  Формат команды при непосредственной адресации

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

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

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

Косвенная адресация используется в тех случаях, когда абсолютные адреса не известны программисту и формируются при выполнении программы.

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

б)

Рисунок 7  Принцип косвенной адресации: а) одноуровневая; б) двухуровневая

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

При данном типе адресации для определения исполнительного адреса (А) необходимо знать базовый адрес (БА) массива, в пределах которого работает программа или обрабатываются данные, и положение ячейки в данном массиве (адрес ячейки относительно начала массива - относительный адрес). Базовый адрес массива программно заносится в специальный регистр базовых адресов РБА. Номер регистра, который используется в качестве РБА, указывается в команде в поле НРБА. В адресной части команды указывается так же относительный адрес ячейки. Исполнительный адрес находится суммированием базового адреса и относительного или, иначе говоря, смещением от базового адреса на величину, равную относительному адресу (рисунок 9). Часть команды, в которой указан относительный адрес, называют полем смещения. Для определения исполнительного адреса может использоваться АЛУ или специальный сумматор.

Рисунок 8  Принцип регистрово-косвенной адресации

Рисунок 9  Принцип относительной адресации

Применение относительной адресации позволяет значительно расширить адресный диапазон процессора, т.к. количество разрядов, отводимое РБА под запись базовых адресов массивов значительно больше длины адресной части команды.

Допустим, команда имеет 4-х разрядное поле НРБА, 10-и разрядное поле смещение и известно, что каждый РБА является 16-и разрядным. Необходимо определить адресный диапазон процессора при относительной адресации.

Так как поле НРБА 4-х разрядное, то можно определить количество РБА: 24. Дальше известно, что каждый РБА 16-разрядный. Значит, можно определить количество массивов памяти, которое может адресовать каждый РБА: 216. Зная количество РБА и количество массивов, которое может адресовать каждый РБА, можно определить общее количество массивов памяти: 24 * 216 = 220. Теперь можно определить количество ячеек памяти в каждом массиве памяти, зная количество разрядов, отведенное на поле смещение: 210. Зная общее количество массивов памяти и количество ячеек памяти в каждом массиве, можно определить общее количество ячеек памяти или адресный диапазон: N = 220 * 210 = 230.

Разновидностью относительной адресации является страничная адресация. Память делится на страницы, размер которых зависит от длины адресной части команды. Например, если под адресную часть команды выделено 9 разрядов, то такая страница будет содержать 29=512 ячеек. Страницам присваиваются порядковые номера, начиная с 0. Исполнительный адрес будет состоять из 2-х частей: старшие разряды - порядковый номер страницы, младшие - адрес ячейки внутри страницы. При адресации по нулевой странице старшие разряды исполнительного адреса будут равны нулю, а младшие разряды - содержимому адресной части команды. При адресации по текущей странице адрес, указанный в команде, считается адресом внутри той страницы, где находится команда. Исполнительные адреса при страничной организации памяти могут быть определены так же путем косвенной адресации.