Организация данных и способы адресации, страница 5

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

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

2.8.4.1 КОСВЕННАЯ АДРЕСАЦИЯ ЧЕРЕЗ ПАМЯТЬ С ПОСТИНДЕКСИРОВАНИЕМ.

В этом случае промежуточный адрес вычисляется по значению базового регистра (An) и базового смещения (bd). По полученному адресу осуществляется косвенное обращение к памяти. К  считанному таким образом длинному слову  добавляется  значение  индексного операнда  (Xn.SIZE*SCALE)  и  необязательное  внешнее  смещение

(od). Результирующее значение представляет собой исполнительный адрес.

Формирование:           ИА = (bd+An)+Xn.SIZE*SCALE+od

Синтаксис ассемблера:   ([bd,An],Xn.SIZE*SCALE,od)

Мода:                   110        31                0

--------------------¬

Адресный регистр:       An  ----->¦    адрес памяти   ¦

L----------T--------31                    0          ¦

Базовое    ------------------------¬        -v¬

смещение:  ¦значение с распр.знаком+-------->+¦

L------------------------        LT31        ¦       0

-----------v--------¬

¦  косвенный  адрес ¦

¦      памяти       ¦

L----------T--------указывает на

¦

31        ¦       0

-----------v--------¬

¦  значение по кос- ¦

¦  венному  адресу  ¦

L----------T--------31                    0          ¦

Индексный  ------------------------¬         ¦

регистр:   ¦значение с распр.знаком+--¬      ¦

L------------------------  ¦      ¦

--------¬             -v¬    -v¬

Масштаб:       ¦масштаб+------------->*+---->+¦

L--------             L--    LT31                    0          ¦

Внешнее    ------------------------¬        -v¬

смещение:  ¦значение с распр.знаком+-------->+¦

L------------------------        LT31        ¦       0

-----------v--------¬

Исполнительный адрес:             ¦       операнд     ¦

L-------------------2.8.4.2 КОСВЕННАЯ АДРЕСАЦИЯ ЧЕРЕЗ ПАМЯТЬ С ПРЕДИНДЕКСИРОВАНИЕМ.

В этом случае промежуточный адрес вычисляется по значению базового регистра (An), базового смещения (bd) и значению индексного операнда (Xn.SIZE*SCALE). По полученному адресу  осуществляется  косвенное  обращение к памяти. К считанному таким образом длинному  слову  добавляется  необязательное  внешнее  смещение

(od). Результирующее значение представляет собой исполнительный адрес.

Формирование:           ИА = (bd+An+Xn.SIZE*SCALE)+od

Синтаксис ассемблера:   ([bd,An,Xn.SIZE*SCALE],od)

Мода:                   110         31               0

-------------------¬

Адресный регистр:       An  ------>¦   адрес памяти   ¦

L---------T--------31                    0          ¦

Базовое    ------------------------¬        -v¬

смещение:  ¦значение с распр.знаком+-------->+¦

L------------------------        LT31                    0          ¦

Индексный  ------------------------¬         ¦

регистр:   ¦значение с распр.знаком+-¬       ¦

L------------------------ ¦       ¦

--------¬           -v¬     -v¬

Масштаб:        ¦масштаб+----------->*+----->+¦

L--------           L--     LT¦

31        ¦       0

-----------v--------¬

¦  косвенный  адрес ¦

¦      памяти       ¦

L----------T--------указывает на

¦

31        ¦       0

-----------v--------¬

¦  значение по кос- ¦

¦  венному  адресу  ¦

L----------T--------31                    0          ¦

Внешнее    ------------------------¬        -v¬

смещение:  ¦значение с распр.знаком+-------->+¦

L------------------------        LT31        ¦       0

-----------v--------¬

Исполнительный адрес:             ¦       операнд     ¦

L-------------------2.8.5 Косвенный способ адресации через программный счетчик со смещением

КОСВЕННАЯ АДРЕСАЦИЯ ЧЕРЕЗ ПРОГРАММНЫЙ СЧЕТЧИК СО СМЕЩЕНИЕМ. Для этого способа адресации требуется одно слово расширения.  Адрес операнда представляет собой сумму значения программного счетчика и содержащегося в слове расширения 16-битного значения  смещения (с предварительно распространенным знаком). В момент  исполнения команды программный счетчик содержит адрес слова  расширения. Формируемый исполнительный адрес принадлежит программному адресному пространству.

Формирование:           ИА = (PC)+d{16}

Синтаксис ассемблера:   (d{16},PC)

Мода:                   111

Регистр:                010     31                   0

-----------------------¬

Программный счетчик:    ------>¦адрес слова расширения¦

L------------T---------¦

31            15   0           ¦

---------------T-----¬         -v¬

Смещение:   ¦распростр.знак¦целое+--------->+¦

L--------------+------         LT31          ¦        0

-------------v---------¬

Адрес памяти:                  ¦       операнд        ¦

L----------------------2.8.6 Косвенные способы адресации через программный счетчик с индексированием

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

Обращение к памяти  по  адресу,  задаваемому  относительно  PC, всегда квалифицируется как обращение к  программному  адресному пространству.

2.8.6.1 КОСВЕННАЯ АДРЕСАЦИЯ ЧЕРЕЗ ПРОГРАММНЫЙ СЧЕТЧИК С  ИНДЕКСИРОВАНИЕМ (8-БИТНОЕ СМЕЩЕНИЕ). Адрес операнда представляет собой сумму значения программного счетчика, смещения с  предварительно распространенным знаком (содержащегося в младших 8 битах слова расширения), а также индексного операнда (с учетом размера и масштаба). В момент исполнения команды программный счетчик содержит адрес слова расширения. Формируемый исполнительный адрес принадлежит программному адресному  пространству.  При  использовании данного способа адресации пользователь  должен  задать смещение, явно указать PC, а также индексный регистр.