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

Допустимые условия cond см. П. 1.17.8.А.

Пример: IF AV CALL scale_down;

Описание: Если команда выполняется (условие отсутствует или ве­р­нуло TRUE), то процессор производит переход на указанный а команде адрес, но предварительно сохраняет в стеке РС адрес возврата. Это делает удобным вызов подпрограмм.

Метод адресации перехода может быть прямым или косвенным регистровым. Прямой адрес <addr> (задается непосредственным операндом или меткой) располагается в 14-битном поле внутри команды. При косвенной регистровой адресации в команде задается один из I регистров. После выполнения перехода пост-модификации этого регистра не производится.

Если команда CALL является последней командой цикла DO UNTIL, то необходимо корректировать состояния стеков цикла.

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

В) КОМАНДЫ JUMP И CALL С ФЛАГОМ FLAG_IN

IF

FLAG_IN

JUMP

<addr>;

NOT FLAG_IN

CALL

Синтаксис:

Пример: IF FLAG_IN JUMP service_proc_three;

Описание: Процессор проверяет состояние своего входа FI и, если оно соответствует заявленному в команде условию, то выполняются обычные JUMP или CALL (см. пп. 1.17.8.А, 1.17.8.Б) с прямым методом адресации переходов.

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

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

[IF cond]

SET

FLAG_OUT

[, …];

RESET

FL0

TOGGLE

FL1

FL2

Синтаксис:

Допустимые условия cond см. п. 1.17.8.А.

Пример: IF MV SET FLAF_OUT, RESET FL1;

Описание: Если команда выполняется (условие отсутствует или ве­р­нуло TRUE), то процессор производит модификацию сигналов на своих выходах FO, FL0-FL2 (см. п. 1.1). Упомянутый в команде сигнал, может быть установлен (SET), сброшен (RESET) или инвертирован (TOGGLE).

В одной команде можно модифицировать множество флагов, которые записываются через запятые (см. пример).

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

Д) ВОЗВРАТ ИЗ ПОДПРОГРАММ

Синтаксис: [IF cond] RTS;

Допустимые условия cond см. п. 1.17.8.А.

Пример: IF LE RTS;

Описание: Если команда выполняется (условие отсутствует или ве­р­нуло TRUE), то процессор производит считывание с вершины стека РС адреса возврата из подпрограммы, который он пересылает в РС. Указатель стека РС при этом соответственно корректируется.

Если RTS является последней командой внутри цикла DO UNTIL, то необходимо корректировать состояния стеков цикла.

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

Е) ВОЗВРАТ ИЗ ПРЕРЫВАНИЙ

Синтаксис: [IF cond] RTI;

Допустимые условия cond см. п. 1.17.8.А.

Пример: IF MV RTI;

Описание: Если команда выполняется (условие отсутствует или ве­р­нуло TRUE), то процессор производит считывание с вершины стека РС адреса возврата из обработчика прерываний, который он пересылает в РС. Указатель стека РС при этом соответственно корректируется. Происходит также считывание с вершин стеков арифметического состояния (код пересылается в ASTAT), состояния режима (код пересылается в MSTAT) и маски прерывания (код пересылается в IMASK). Указатели этих стеков при этом соответственно корректируются.

Если RTI является последней командой внутри цикла DO UNTIL, то необходимо корректировать состояния стеков цикла.

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

Ж) ЦИКЛ DO UNTIL

Синтаксис: DO <addr> [UNTIL term];

Допустимые term см. табл. 1.7

Пример: DO loop_label UNTIL CE; {CNTR декрементируется при каждом прохождении цикла}

Описание: Цикл DO UNTIL организует повторное (циклическое) выполнение фрагмента программы, который называется телом цикла. Тело цикла начинается командой, которая непосредственно следует за командой цикла. Концом тела цикла является команда, которая отмечена прямым адресом <addr> (непосредственный операнд или метка).

Выполнение тела цикла повторяется до тех пор, пока выполняется, записанное в команде цикла условие выхода из цикла. Если условие отсутствует, то цикл становится бесконечным. Условие (сформированное предыдущими командами) проверяется при выполнении последней команды. Если условием является СЕ, то содержимое регистра CNTR декрементируется при каждом прохождении тела цикла.

Во время выполнения цикла DO адрес последней команды тела цикла (совместно с кодом условия выхода из цикла) хранится в вершине LOOP стека (см. п. 1.8), а адрес первой команды тела цикла – в вершине РС стека.

Любое вложение DO циклов продолжает запись в LOOP и РС стеки до их предельных уровней (4 уровня для LOOP стека и 16 уровней для РС стека). Попытка нового вложения цикла DO (записи в любой из перечисленных стеков) за пределами указанных уровней вызовет установку битов переполнения соответствующих стеков и выполнение команды NOP.

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

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

SSTAT:

7

6

5

4

3

2

1

0

LSO

LSE

SSO

SSE

CSO

CSE

PSO

PSE

*

0

-

-

-

-

*

0

LSO – переполнение LOOP стека: устанавливается при переполнении LOOP стека, а противном случае не изменяется.

LSE – LOOP стек пуст: всегда очищается, что говорит о заполнении LOOP стека.

PSO – переполнение РС стека: устанавливается при переполнении РС стека, а противном случае не изменяется.

PSE – РС стек пуст: всегда очищается, что говорит о заполнении РС стека.

З) ЭНЕРГОСБЕРЕЖЕНИЕ

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

IDLE(n);

Описание: Команда IDLE вызывает переход процессора в режим энергосбережения. Только прерывания могут вывести его из этого режима. Если прерывание случилось, то оно обрабатывается (осуществляется переход на соответствующий обработчик) и выполнение программы продолжается с команды, которая следует за командой IDLE. Обычно такой командой является команда перехода на IDLE, чтобы опять перевести процессор в режим энергосбережения. Если команда IDLE является последней внутри тела цикла DO UNTIL, то необходимо предусмотреть предосторожности, которые описаны в п. 1.8.

IDLE(n) является специальной версией команды IDLE, которая уменьшает частоту внутренней синхронизации процессора для уменьшения энергопотребления. Коэффициент деления частоты синхронизации задается параметром n = 16, 32, 64 или 128. После выполнения команды IDLE(n) процессор остается в рабочем состоянии, но с уменьшенной частотой синхронизации. Пока процессор находится в таком состоянии частота всех внутренних и внешних синхросигналов уменьшается в n раз.

Прерывания также выводят процессор из состояния IDLE(n), но восстановление нормальной частоты происходит по прошествии промежутка времени не менее n тактов.

Если процессор находится в состоянии IDLE(n) и использует внешнюю синхронизацию последовательного порта, то частота внутренней синхронизации процессора может быть меньше частоты внешней синхронизации. Это может создать проблемы, поскольку запросы на прерывания от последовательного порта с прежней интенсивностью процессор обрабатывать не в состоянии по причине сниженной частоты внутренней синхронизации.

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

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