Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МП устройства СУ / Конспект лекций (дополнительный, обновленный).doc
Скачиваний:
127
Добавлен:
19.03.2015
Размер:
552.45 Кб
Скачать

13.8. Способы адресации данных.

Способ адресации данных – это механизм указания месторасположения операнда, над которым команда выполняет дествие.

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

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

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

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

Относительная адресация. При относительной адресации фактический адрес определяется относительно счетчика команд или иного счетного регистра путем сложения содержимого этого регистра с указанным в команде числом. Содержимое счетчика команд или иного регистра называется базовым адресом, а указанное в команде число – логическим адресом или смещением относительно базового адреса. Относительная адресация позволяет размещать программы в памяти без привязки к конкретному адресу. Такая форма адресации удобна, когда разрядность счетчика команд ниже разрядности шины адреса микропроцессорной системы. Также относительная адресация используется для постраничной организации памяти. Содержимое счетчика команд в этом случае определяет адрес внутри страницы, а адрес, указанный в команде, определяет номер страницы.

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

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