При относительной адресации (ОА) для получения исполнительного адреса операнда содержимое подполя Aк команды складывается с содержимым счетчика команд (рис. 27). Таким образом, адресный код в команде представляет собой смещение относительно адреса текущей команды. Следует отметить, что в момент вычисления исполнительного адреса операнда в счетчике команд может уже быть сформирован адрес следующей команды, что нужно учитывать при выборе величины смещения. Обычно подполе Ак трактуется как двоичное число в дополнительном коде.
Рис. 27. Относительная адресация.
Адресация относительно счетчика команд базируется на свойстве локальности, выражающемся в том, что большая часть обращений происходит к ячейкам, расположенным в непосредственной близости от выполняемой команды. Это позволяет сэкономить на длине адресной части команды, поскольку разрядность подполя Ак может быть небольшой. Главное достоинство данного способа адресации состоит в том, что он делает программу перемещаемой в памяти: независимо от текущего расположения программы в адресном пространстве взаимное положение команды и операнда остается неизменным, поэтому адресация операнда остается корректной.
Эффективность данного способа адресации можно описать выражениями:
TСА = tРОН + tСЛ + tЗУ; ССА = int ( log2 Ni – RСК)
где tCЛ — время сложения составляющих исполнительного адреса; RCK — разрядность счетчика команд.