Что такое косвенная адресация
Перейти к содержимому

Что такое косвенная адресация

  • автор:

Что такое косвенная адресация

1. Непосредственная адресация. При непосредственной адресации операнд (байт или слово) размещается непосредственно в коде команды.

ADD AX,#220 К содержимому регистра AX прибавляется 220 и результат сохраняется в AX
PUSH #1232h В стек помещается число 1232h

2. Прямая регистровая адресация. Прямая регистровая адресация используется в тех случаях, когда операнд или результат размещается в RRAM и его адрес находится в пределах от 0000H до 00FFH. В этом случае для представления адреса может быть использован один байт в коде команды.

ADD AX,BX,CX Складываются значения в регистрах BX и CX, результат сохраняется в регистре AX
INCB CL Содержимое счетчика CL увеличивается на 1

Остальные способы адресации используются при обращении к ячейкам памяти и регистрам RRAM, когда для указания адреса операнда требуется использовать два байта (адрес в формате «слово»).

3. Косвенная адресация. При косвенной адресации адрес операнда, имеющий формат «слово», записывается в пару регистров в RRAM в область с адресами от 1AH до FFH, а адрес адреса операнда, имеющий формат «байт», входит в состав кода команды.

LD AX,[AX] В регистр AX пересылается значение из ячейки памяти с адресом, на который ссылается AX
POP [AX] Из стека пересылается значение из ячейки памяти с адресом, на который ссылается AX;

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

Адресация — это система задания адресов в командах микропроцессора или ЦВМ и соответствующих правил доступа к устройствам хранения информации (регистрам, ячейкам памяти, портам и др.) в соответствии с заданными адресами.

Система адресации предназначена для обеспечения доступа к к устройствам хранения информации.

Введём ряд новых понятий.

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

Адресный код (АК) позволяет с помощью специальных преобразований определять исполнительный адрес.

Система адресации реализуется большим многообразием способов адресации.

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

Классификация способов адресации.

Классификация способов адресации представлена на Рис. 1

Рис. 1 Классификация способов адресации

Все способы адресации по указанию кода исполнительного адреса можно классифицировать на 2 больших класса

Рассмотрим эти два класса более подробно.

Явная адресация.

Явный способ адресации – это способ при котором в адресной части команды указан исполнительный адрес или адресный код операнда.

Рассмотрим классификацию явного способа адресации.

По адресации операнда или адреса операнда явный способ делится на

1. Прямую адресацию

2. Косвенную адресацию.

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

Прямая адресация делится на абсолютную и относительную.

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

Рис. 2 Прямой способ адресации

Относительная прямая адресация -т.е. исполнительный адрес определяется с помощью специальных действий с адресным кодом (АК). В адресной части команды указывается смещение адреса(величина D).

Относительная адресация используется в командах переходов и позволяет обходится коротким адресом для обращения к оперативной памяти (ОП)

Различают относительную адресацию с базированием и индексированием.

Относительная адресация с базированием -такая адресация, при которой исполнительный адрес определяется суммированием базового адреса Б со смещением.

где (Б)- содержимое регистра базового адреса

D — смещение адреса

Содержимое базового регистра (Б) является начальным адресом (базой) заданной области оперативной памяти (ОП). Смещение адреса D (число со знаком) задает относительный адрес ячейки ОП в этой области.

Рис. 3 Относительная адресация с базированием

Рассматриваемая адресация есть адресация относительно базы Б, однако относительной ее принято называть тогда, когда базой служит текущее значение счетчика команд (СК). А абсолютный исполнительный адрес АИ получается суммированием содержимого счетчика команд и смещения адреса:

Если в качестве базы используется не счетчик команд, а содержимое иного регистра, то говорят о относительной адресации по базе :

Рис. 4 Относительная адресация по базе

Адресация с базированием служит для расширения адресного пространства, используемого микропроцессором.

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

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

Относительная адресация с индексированием или индексная адресация — это такая адресация, при которой исполнительный адрес (АИ) получается также суммированием смещения и базы, но базовый адрес (В) содержится в команде, а смещение называемое в этом случае индексным словом или индексом (1), помещается в так называемый индексный регистр I. При этом

где В — базовый регистр (I) — содержимое индексного регистра

Организация относительной адресации с индексированием показана на Рис. 5

Рис. 5 Организация относительной адресации с индексированием

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

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

В микропроцессорах относительный способ адресации с индексированием получил широкое распространение под названием автоинкрементного (автодекрементного) способа адресации.

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

Рис. 6 Автоинкрементный способ адресации

Автодекрементный способ адресации также применяется для обработки массивов данных. Однако в отличии от автоинкрементного метода адресация к ячейкам массива идет в противоположном направлении. При этом содержимое адресов памяти уменьшается на 1 для байтовых команд, и на 2 — для команд над словами (Рис. 7).

Рис. 7 Автодекрементный способ адресации

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

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

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

Косвенная адресация — это такая адресация, при которой в адресном поле команды указан адрес ячейки памяти или регистра, в которых хранится не сам операнд, а его адрес.

Если этот адрес является абсолютным адресом операнда, то имеет место одноступенчатая косвенная адресация. На Рис. 8 и Рис. 9 изображены два способа адресации с хранением косвенного адреса в ячейке памяти и во внутреннем регистре микропроцессора.

Рис. 8 Косвенная адресация с хранением косвенного адреса в ячейке памяти

Если в ячейке памяти или регистре, адреса которых указаны в команде, содержится не абсолютный адрес операнда, а его адресный код, то имеется место многоступенчатая косвенная адресация. Обычно необходимость в ней возникает при использовании «ценных» списков, т.е. совокупности слов, связанных между собой адресами по принципу: первое слово содержит адрес второго слова, второе слово третьего слова и т.д. Такой список должен заканчиваться прямым адресом, т.е. иметь вид:

KA16 KA266. 6 KAj——6 ПА,

где КА — косвенный адрес; ПА — прямой адрес.

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

Рис. 9. Косвенная адресация с хранением косвенного адреса во внутреннем регистре

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

На Рис. 10 — Рис. 13 приведены четыре основных способа косвенной адресации, широко используемых в микропроцессорах — косвенно-регистровый способ (Рис. 10), косвенно-автоинкрементный способ (Рис. 11), косвенно-автодекрементный способ (Рис. 12), косвенно-индексный способ (Рис. 13). На рисунках адреса, отмеченные знаком * , могут иметь много уровневую адресацию.

При косвенно-регистровой адресации в команде содержится указание (адрес) на один из внутренних регистров, в котором содержится адрес данных, находящихся в основной памяти. Поэтому при «коротких» командах с помощью 16-разрядных внутренних регистров можно адресовать основную память максимальным объемом 64 К слов.

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

Рис. 10 Косвенно-регистровый способ адресации

Косвенно-автоинкрементная (декрементная) и индексная адресация являются сочетанием косвенной и относительной (с индексированием) адресации. В этом случае адрес адреса указывается во внутреннем регистре, а адрес операнда превращается в исполнительный адрес в результате сложения этого адреса с содержимым индексного регистра или увеличением (уменьшением) этого адреса на 1 или 2.

Рис. 11 Косвенно-автоинкрементный способ адресации

Рис. 12 Косвенно-автодекрементный способ адресации.

Рис. 13 Косвенно-индексный способ адресации

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

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

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

К неявной адресации относят непосредственную адресацию, адресацию к накопительному регистру (аккумулятору) и адресацию к стеку.

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

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

При адресации к накопительному регистру «умалчиваются» адреса источника и приемника информации. При этом подразумевается, что источником значения неуказанного операнда и приемником значения результата операции служит аккумулятор.

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

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

Вывод

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

2. Принципы организации памяти

Память – это совокупность устройств, которые служат для записи, хранения и считывания.

Назначение запоминающих устройств.

Устройства памяти предназначены для записи, хранения и считывания информации.

Классификация запоминающих устройств.

Устройства памяти классифицируются по следующим основным признакам:

По форме хранения информации:

* оперативные запоминающие устройства (ОЗУ);

* постоянные запоминающие устройства (ПЗУ).

По способу занесения информации ПЗУ делятся на:

* собственно ПЗУ (информация заносится при изготовлении);

* программируемые ПЗУ (ППЗУ) (информация может изменяться однократно);

* репрограммируемые ПЗУ (РПЗУ) (РПЗУ с электрическим стиранием информации; РПЗУ с ультрафиолетовым стиранием информации) (информация может изменяться многократно);

По способу хранения информации ОЗУ делятся на:

По операциям обращения:

* обращение только при считывании.

По организации доступа к памяти:

* непосредственный доступ, т.е. это доступ, время на который не зависит от места расположения информации в памяти.

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

* последовательный доступ, в этом случае при поиске нужной информации последовательно просматривается вся информация.

Устройство запоминающих устройств.

В состав запоминающих устройств входят

* накопитель (массив ячеек памяти, который обеспечивает хранение информации.);

* схемы обслуживания (обеспечивают поиск информации в этом массиве и собственно запись и считывание.).

Принцип действия запоминающих устройств

Принцип действия запоминающих устройств основан на следующих свойствах p-n- перехода:

* большое сопротивление в закрытом состоянии;

* маленькое сопротивление в открытом состоянии;

* наличие барьерной и диффузионной емкостей.

Рассмотрим отдельно ПЗУ и ОЗУ.

Дата добавления: 2017-11-21 ; просмотров: 9287 ;

Способы адресации операндов. Косвенная и косвенная регистровая адресации

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

Косвенная адресация — адресация адреса.
Преимущества:
позволяет преодолеть такие трудности, как в прямой и непосредственной адресации.
Недостаток:
двойное обращение в память (ухудшает временные характеристики, расходуется 2 ячейки опертивной памяти).

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

Регистровая адресация напоминает прямую адресацию. Различие в том, что адресное поле указывает не на ячейку памяти, а на регистр процессора. Номер регистра — R.
Обычно размер адресного поля равен 3 и 4 битам, что позволяет адресовать 8, 16 регистров общего назначения.
Преимущества:
&nbsp1) Короткое адресное поле команды.
&nbsp2) Исключаются обращения к оперативной памяти.
Недостатки:
Ограничено число регистров общего назначения, не позволяет широко использовать эту адресацию.

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

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

Операции адресации (&) и косвенной адресации (*)

Запись была обновлена

При работе с указателями и при передаче в функции параметров по ссылке используются операции (&) — адресации, и (*) — косвенной адресации или разыменования.

Например, указатель целого типа name описывается при косвенной адресации (разыменования) так:

int *name;

Унарная операция &, примененная к некоторой переменной, показывает, что нам нужен адрес этой переменной, а не ее текущее значение. Если переменная name объявлена как указатель, то оператор присваивания:

name = &x;

означает: «взять адрес переменной x и присвоить его значение переменной-указателю name».

Косвенная адресация (разыменование) *, примененная к указателю, обеспечивает доступ к содержимому ячейки памяти, на которую ссылается указатель. Например, *name можно описать словами как «то, что содержится по адресу, на который указывает name».

Указатели могут использоваться в выражениях. Если. например, переменная name указывает на целое x, то *name может во всех случаях использоваться вместо x:

*name+1; //увеличивает x на единицу *name = 0; //равносильно x = 0

Два оператора присваивания:

name = &x; y = *name;

выполняет то же самое, что и один оператор y=x.

Польза от применения указателей в таких ситуациях, мягко выражаясь, невелика.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *