Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

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



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

Непосредственная адресация позволяет задавать фиксированное значение операнда непосредственно в адресной части команды.

Собственная адресация при этом отсутствует, т.к. ОП=Aк. Непосредственно адресация удобна при работе с константами. Расширение формата команд за счет указания самого операнда в адресных кодах команд.

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

Косвенная адресация – это эффективный и важный способ адресации, при котором адрес, указываемый в команде, является указателем ячейки, содержащей исполнительный адрес операнда в памяти. Фактически, при косвенной адресации в команде указывается адрес адреса. Дляобозначение косвенной адресации используют запись вида:

Аи = Ак

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

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

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

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

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

Перемещаемость программы предполагает неизменность адресных ссылок в программе при ее перемещении внутри доступного процессору пространства памяти. Базовые адреса исполняемых программ определяются ОС непосредственно при загрузке программы в оперативную память. В системах виртуальной памяти базирование используется для адресации памяти существенно большего размера чем реальная оперативная память вычислительной машины. При относительных адресациях команд, базовый адрес размещается в счетчике команд, а смещение disp, указываемое в команде, определяет адрес перехода, относительно текущего значения счетчика команд, т.е. исполнительный адрес определяется по формуле:

Аи = (СК) +disp (32)

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

- базовую адресацию

- индексную адресацию

Регистры, используемые в команде, которые соответствуют этим способам адресации, называют базовыми и обозначают В и индексными I.





Дата публикования: 2015-01-24; Прочитано: 1397 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...