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

Формирование:           An=An-SIZE

ИА = (An)

Синтаксис ассемблера:   -(An)

Мода:                   100

Регистр:                n              31         0

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

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

L--T---^-------v-¬ ¦

Длина операнда(1,2 или 4):     ------->¦ - ¦ ¦

L-T-- ¦

+---31¦        0

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

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

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

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

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

Мода:                   101

Регистр:                n              31         0

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

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

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

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

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

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

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

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

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

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

Индексный операнд имеет формат "Xn.SIZE*SCALE". "Xn" определяет выбор какого-либо адресного регистра или регистра данных в  качестве индексного регистра. "SIZE" указывает размер  индекса  и задается как "W" для слова или  как  "L"  для  длинного  слова.

"SCALE" вводит масштабный множитель  для  индексного  регистра, которым может быть 1 (отсутствие масштабирования), 2, 4 или 8.

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

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

Формирование:           ИА = (An)+(Xn)+d{8}

Синтаксис ассемблера:   (d{8},An,Xn.SIZE*SCALE)

Мода:                   110

Регистр:                n              31         0

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

16- или 32-битное базовое смещение (знак распространяется перед вычислением исполнительного адреса). Адрес операнда представляет собой сумму значения адресного  регистра,  масштабированного значения индексного регистра и базового смещения.

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

Стоит отметить, что если индексный регистр указан, причем в качестве такового указан регистр данных (Dn), а не  адресный  регистр, то будет реализован "косвенный доступ через регистр данных".

Формирование:           ИА = (An)+(Xn)+bd

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

Мода:                   110

Регистр:                n             31         0

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

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

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

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

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

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

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

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

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

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

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

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

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

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

L-----------2.8.4 Косвенные способы адресации через память

Этот способ адресации требует от одного до пяти  слов  расширения; их подробное описание дано в Разделе  2.9 КОДИРОВАНИЕ  ИСПОЛНИТЕЛЬНЫХ АДРЕСОВ. В ассемблерной форме записи косвенную адресацию через память отличает от косвенной адресации через  адресный регистр употребление квадратных скобок ([]). При использовании данного способа адресации соответствующие указатели ассемблер генерирует в словах расширения.

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