Скачиваний:
511
Добавлен:
16.04.2015
Размер:
3.42 Mб
Скачать

1.5.2. Методы адресации

Для выполнения команды АЛУ должно получить информацию не только об операции, которую необходимо выполнить, но и о местах хранения операндов, над которыми выполняется данная операция.

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

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

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

Прямая адресация. В данном методе адресации содержимое адресного поля в команде является исполнительным адресом ячейки памяти. Из-за своей простоты режим прямой адресации используется практически во всех МК.

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

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

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

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

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

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

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

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

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

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

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

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

Соседние файлы в папке Микроконтроллеры