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

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

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

Мода:                   111

Регистр:                010     31                   0

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В этом способе адресации необязательно указывать все три компонента. Тем не менее, для того, чтобы отличать этот способ адресации от косвенной адресации по адресному регистру с индексированием (базовое смещение) в тех случаях, когда пользователь хочет избежать использования PC, должна употребляться аббревиатура ассемблера "ZPC" (вместо значения  PC  будет  взято  нулевое значение). Это обеспечивает пользователю доступ к  программному пространству без необходимости использования PC при  вычислении исполнительного адреса. Следует обратить внимание  на  то,  что указав ZPC и регистр данных Dn в качестве индексного  регистра, можно организовать доступ к программному  пространству  подобно

"косвенной адресации по регистру данных", не используя PC.

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

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

Мода:                   111

Регистр:                011     31                   0

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

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

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

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

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

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

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

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

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

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

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

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

31           ¦       0

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

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

L----------------------2.8.7 Косвенные способы адресации через программный_счетчик/память

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

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

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

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

2.8.7.1 КОСВЕННАЯ АДРЕСАЦИЯ ЧЕРЕЗ ПРОГРАММНЫЙ_СЧЕТЧИК/ПАМЯТЬ  С

ПОСТИНДЕКСИРОВАНИЕМ. Промежуточный адрес памяти вычисляется путем сложения PC, используемого в качестве базового регистра,  и базового смещения (bd). Промежуточный адрес служит для считывания из программного пространства длинного слова, которое, будучи сложено с индексным операндом (Xn.SIZE*SCALE) и, быть может, с необязательным внешним смещением (od), дает окончательный исполнительный адрес.

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

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

Мода:                   111

Поле регистра:          011     31                   0

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

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

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