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

1.17.10. Прочие команды

А) УПРАВЛЕНИЕ СТЕКАМИ

[

PUSH

STS][, POP CNTR][, POP PC][, POP LOOP];

POP

Синтаксис:

Пример: POP CNTR, POP PC, POP LOOP;

Описание: Команда управления стеками производит запись и считывание стеков с соответствующей коррекцией указателей стеков. Команда выполняется за один машинной цикл, не смотря на количество указанных в ней стеков

Команда PUSH STS инкрементирует указатель STATUS стека, а затем по новому адресу записывает в стек содержимое следующих регистров: ASTAT, MSTAT и IMASK. Эта команда выполняется автоматически, когда происходит вход в обработчик прерывания.

Все команды POP производят считывание с вершины означенного стека с последующим декрементированием указателя стека. Отличие команды POP STS заключается в том, что она считывает сразу три стека с загрузкой следующих регистров: ASTAT, MSTAT и IMASK. Эта команда выполняется автоматически, когда происходит выход из обработчика прерывания (выполняется команда RTI).

РС стек автоматически считывается при выполнении команд RTI и RTS.

Флаги состояния SSTAT:

SSTAT:

7

6

5

4

3

2

1

0

LSO

LSE

SSO

SSE

CSO

CSE

PSO

PSE

-

*

*

*

-

*

-

*

PSE – РС стек пуст: устанавливается, если после очередной операции POP стек РС становится пустым, в противном случае сбрасывается.

CSE – стек счетчика циклов пуст: устанавливается, если после очередной операции POP стек счетчика циклов становится пустым, в противном случае сбрасывается.

SSE – STATUS стек пуст: для PUSH STS этот бит всегда сбрасывается (что говорит о не пустом стеке); для POP STS этот бит устанавливается, если после очередной POP операции STATUS стек становится пустым, в противном случае сбрасывается.

SSO – переполнение STATUS стека: для PUSH STS устанавливается при переполнении STATUS стека, а противном случае не изменяется.

LSE – LOOP стек пуст: устанавливается, если после очередной POP операции LOOP стек становится пустым, в противном случае сбрасывается.

Примечание: если происходит переполнение стека, то устанавливается соответствующий ххО бит в регистре SSTAT, как сигнал о потере информации. Сброс этого бита возможен только сбросом процессора.

Процессор поддерживает специальную версию команды пересылки регистр-регистр – TOPPCSTACK. Она позволяет при операциях с РС стеком быть назначением не только РС (как в стандартной команде POP РС), но множеству других регистров. Для считывания с вершины РС стека (с соответствующей коррекцией указателя стека) можно написать:

reg = TOPPCSTACK; {РС стек считывается в регистр reg}

NOP; {необходима для корректного завершения считывания }

Кроме того, нет стандартной команды PUSH PC. Чтобы записать в РС стек определенное значение, можно выполнить следующее:

TOPPCSTACK = reg;

При этом стек загрузится (с соответствующей коррекцией указателя стека) содержимым reg за один цикл (не надо давать NOP;).

Примечание: в других контекстах использовать TOPPCSTACK запрещается.

Примеры: АХ0 = TOPPCSTACK; {считывание РС в АХ0}

NOP;

TOPPCSTACK = I7; {запись содержимого I7 в РС стек}

Для команды TOPPCSTACK доступны только следующие регистры: AX0, AX1, AY0, AY1, AR, MX0, MX1, MY0, MY1, MR0, MR1, MR2, SI, SE, SR0, SR1, I0-I7, M0-M7, L0-L7. Необходимо учитывать также следующие ограничения:

  • Команда TOPPCSTACK не может быть размещена непосредственно перед командой RTI, они должны разделяться хотя бы одной командой NOP;

  • Команда TOPPCSTACK не может быть последней (и даже предпоследней) командой в теле цикла DO UNTIL;

  • Внутри цикла DO UNTIL должно быть одинаковое число записей/чтений РС стека с учетом использования как обычных команд доступа к РС стеку, так и команды TOPPCSTACK.

Б) УПРАВЛЕНИЕ РЕЖИМОМ РАБОТЫ ПРОЦЕССОРА

ENA

BIT_REV

[, …];

DIS

AV_LATCH

AR_SAT

SEC_REG

G_MODE

M_MODE

TIMER

Синтаксис:

Пример: DIS AR_SAT, ENA M_MODE;

Описание: Команда устанавливает (ENA) или (DIS) запрещает означенный режим работы процессора. При этом соответствующий бит режима в регистре состояния режима процессора (MSTAT) устанавливается командой ENA или сбрасывается командой DIS. После сброса процессора регистр MSTAT обнулен, поэтому все режимы работы процессора запрещены. Командой можно изменить любое число режимов за один машинный цикл. При этом команды ENA и DIS должны разделяться запятыми.

Названия битов команды являются синонимами названий битов регистра MSTAT (см. табл. 1.12): BIT_REV – RME; AV_LATCH –OLME; AR_SAT – SME; SEG_REG – DRBS; G_MODE – GME; M_MODE – MRP; TIMER – TE. Функциональное назначение этих битов описано в п. 1.10.

В) МОДИФИКАЦИЯ АДРЕСНЫХ РЕГИСТРОВ

MODIFY(

I0

,

M0

);

I1

M1

I2

M2

I3

M3

I4

M4

I5

M5

I6

M6

I7

M7

Синтаксис:

Пример: MODIFY (I1, M1);

Описание: Команда производит сложение содержимого выбранного I регистра с содержимым выбранного М регистра. Между суммой и содержимым L регистра производится операция модуля, результат этой опе­рации сохраняется в I регистре. Для линейной (не кольцевой) адресации L регистр, соответствующий I регистру, должен быть обнулен. Допускается комбинировать I и М регистры, принадлежащие одному и тому же DAG.

Флаги состояния: не изменяются.

Г) НЕТ ОПЕРАЦИИ

Синтаксис: NOP;

Описание: При выполнении команды никакой операции не производится. Команда выполняется за один машинный цикл.

Флаги состояния: не изменяются.

Д) РАЗРЕШЕНИЕ/ЗАПРЕЩЕНИЕ ПРЕРЫВАНИЙ

Синтаксис: ENA INTS;

DIS INTS;

Описание: После сброса процессора все прерывания по умолчанию разрешены. После выполнения команды DIS INTS все прерывания замаскированы (включая прерывание powerdown) без изменения содержимого регистра IMASK.

Команда ENA INTS разрешает обслуживание всех незамаскированных прерываний.

Примечание: запрет прерываний не влияет на автобуферицацию последовательных портов и BDMA, IDMA пересылки.

Флаги состояния: не изменяются.

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