Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KOMAROV.DOC
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.32 Mб
Скачать

1.17.2. Методы адресации

При описании методов адресации и команд приходится ссылаться на различные регистры процессора, причем, удобно использовать обобщенные обозначения этих регистров reg и dreg, см. табл. 1.20.

Таблица 1.20

Регистры процессора reg и dreg

Регистры reg

SB

PX

I0-I7, M0-M7, L0-L7

CNTR

ASTAT, MSTAT, SSTAT

IMASK, ICNTL, IFC

TX0, TX1, RX0, RX1

Регистры данных dreg

AX0, AX1, AY0, AY1, AR

MX0, MX1, MY0, MY1, MR0, MR1, MR2

SI, SE, SR0, SR1

Табл. 1.20 показывает, что к регистрам типа reg относятся почти все регистры процессора, которые не располагаются в ПД. К отсутствующим регистрам, в частности, относятся AF и MF. Регистры данных dreg являются подмножеством регистров reg. К ним относятся регистры данных вычислительных устройств, за одним исключением - SB.

Процессор поддерживает четыре метода адресации данных:

  • Регистровый, когда месторасположения операнда определяется именем регистра. Пример: AX0 = SI;, где имя SI указывает на местоположение операнда-источника, а АХ0 – операнда-приемника;

  • Непосредственный, когда операнд является частью команды. Пример: I0 = 0х1234;, где константа 0х1234 присваивается индексному регистру I0;

  • Прямой, когда в команде указан адрес операнда. Например: AX0 = DM(0x1234);, где константа 0х1234 является адресом в ПД операнда-источника;

  • Косвенный, когда адрес операнда находится в одном из индексных регистров. Пример: AX0 = DM(I1, M1);, где адрес операнда-источника содержится в индексном регистре I1. После пересылки этот регистр инкрементируется на величину содержимого М1.

Процессор также поддерживает два метода адресации переходов:

  • Прямой, когда в команде явно указан адрес перехода. Например:

IF EQ JUMP zero;, где zero является меткой и при компиляции заменяется соответствующим адресом в ПП;

  • Косвенный, когда адрес операнда находится в одном из индексных регистров, предназначенных для адресации ПП (I4-I7). Пример: IF FLAG_IN JUMP (I4);, где адрес перехода содержится в индексном регистре I4.

1.17.3. Условные обозначения

При описании команд будут использоваться следующие соглашения о их записи:

Квадратные скобки [ ] Отмечают необязательную часть команды

Параллельные линии | | Содержат список операндов, из которого может быть выбран только один операнд

ПРОПИСНЫЕ БУКВЫ Прописные буквы обозначают литерал. К литералам относятся имена команд (например, ADD), имена регистров (например, АХ0) или служебная информация (например, (SS) в командах умножения, см. п. 1.17.1). Литералы должны писаться так, как они приведены в описании команды

Операнды Обобщенные операнды некоторых команд могут писаться строчными буквами. В ассемблерной программе могут иметь различное значение. Например, в качестве yop могут выступать имена следующих регистров AY0, AY1 или AF

<exp> Обозначает экспоненту (число и направление сдвигов) в командах непосредственных сдвигов (см. п. 1.17.7.е, ж). Экспонента является 8-бит­ным целым со знаком

<data> Обозначает значение непосредственного данного. Может быть не только числом, но и именем адресной метки или именем переменной/буфера, перед которой должны стоять символы ‘%’ или ‘^’

<addr> Обозначает значение прямого адреса. Может быть либо непосредственным значением (константой), либо программной меткой

<reg> Имя любого доступного регистра процессора, см. табл. 1.20

<dreg> Имя любого доступного регистра данных процессора, см. табл. 1.20

Непосредственные значения <exp>, <data> или <addr> могут быть константами в десятичной, шестнадцатеричной, восьмеричной или двоичной системах счисления. По умолчанию в десятичной.

Для отражения состояния флагов ASTAT используются следующие обозначения:

* показывает, что бит изменен выполненной командой;

- показывает, что бит не зависит от выполненной командой;

0, 1 показывает, что бит безусловно сбрасывается или устанавливается выполненной командой.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]