Относительная адресация

 

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

 

 

Рис. 27. Относительная адресация.

 

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

Эффективность данного способа адресации можно описать выражениями:

TСА = tРОН + tСЛ + tЗУ; ССА = int ( log2 Ni – RСК)

где tCЛ — время сложения составляющих исполнительного адреса; RCK — разряд­ность счетчика команд.