Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции4_1.doc
Скачиваний:
6
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

2.4. Способы адресации

Адресный код - это информация об адресе операнда, содержаща­яся в команде.

Исполнительный адрес - это номер ячейки памяти, к которой производится фактическое обращение.

В современных ЭВМ адресный код, как правило, не совпадает с исполнительным адресом.

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

1) Подразумеваемый операнд. В команде может не содержаться явных указаний об операнде; в этом случае операнд подразумевается и фактически задается кодом опера­ции команды.

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

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

4) Прямая адресация. В адресной части команды может быть непосредственно указан испол­нительный адрес.

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

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

6) Укороченная адресация. Для уменьшения длины кода команды часто применяется так называемая укороченная адресация. Суть ее сводится к тому, что в команде задаются только младшие разряды адресов, а старшие разря­ды при этом подразумеваются нулевыми. Такая адресация позволяет использовать только небольшую часть фиксированных ячеек в начале всей адресуемой области памяти, и поэтому применяется лишь сов­местно с другими способами адресации.

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

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

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

9) Стековая адресация. Стековая память, реализующая безадресное задание операндов, особенно широко используется в микропроцессорах и мини-ЭВМ.

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

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

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

Автоинкрементная и автодекрементная адресации могут рассмат­риваться как упрощенный вариант индексации.

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

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

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

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

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

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

- засылка в соответствующий индексный регистр начального значения индекса;

- изменение индекса;

- проверка окончания циклических вычислений.