[IF cond] CALL |(I4) |;
|(I5) |
|(I6) |
|(I7) |
|<addr>|
Переход (вызов подпрограммы) по состоянию вывода флага Flag In:
[IF] |FLAG_IN | |JUMP| <addr>;
|IF NOT FLAG_IN | |CALL|
Изменение состояния вывода флагов:
[IF cond] |SET | |FLAG_OUT | [,...]; {установка флага}
|RESET | |FL0 | {сброс флага}
|TOGGLE | |FL1 | {инверсия флага}
|FL2 |
Возврат из подпрограммы:
[IF cond] RTS;
Возврат из подпрограммы прерывания:
[IF cond] RTI;
Ожидание прерываний:
IDLE;
Команда переводит процессор в режим пониженного потребления на некоторое неопределенное время. Для того, чтобы перевести процессор в этот режим на продолжительное время, необходимо после этой команды вставить команду перехода на IDLE, зациклив тем самым программу. Выход из этого режима произойдет по любому прерыванию процессора.
Допустимые значения <term> и <cond> приведены в табл. 18.1 и табл. 18.2 соответственно. Запись <addr> может быть меткой или числовым значением от 0 до 0x3FFF. Примеры команд управления программой:
CNTR=100; {Заполнить счетчик циклов}
DO Met1 UNTIL CE; {Выполнить цикл до метки Met1, пока счетчик циклов не пуст}
AX0 = DM(I0,M0); {Переслать данные через регистр AX0}
Met1: DM(I1 ,M1 )=AX0; {в новую область памяти}
JUMP(I4); {Осуществить переход по адресу в индексном регистре I4}
CALL (I6); {Вызвать подпрограмму по адресу в индексном регистре I6}
SET FLAG_OUT; {Установить в 1 вывод FLAG_OUT}
RESET FL2 {Сбросить флаг FL2}
TOGGLE FL0 {Инвертировать флаг FL0}
Met2: IDLE; {Режим ожидания прерывания}
JUMP Met2:
Таблица 18.1
Значение <term> | Пояснение |
---|---|
CE | Счетчик циклов пуст |
EQ | Равно нулю |
NE | Не равно нулю |
LT | Меньше нуля |
GE | Больше или равно нулю |
LE | Меньше или равно нулю |
GT | Больше нуля |
АС | Перенос АЛУ |
NOT AC | Нет переноса АЛУ |
AV | Переполнение АЛУ |
NOT AV | Нет переполнения АЛУ |
MV | Переполнение умножителя |
NOT MV | Нет переполнения умножителя |