Программирование переходов в Stl-программе

С помощью функций перехода (jump functions) можно прервать линейное выполнение программы и продолжить ее выполнение в другой точке. Такое разветвление программы может быть организовано или с проверкой выполнения определенного условия, или без проверки каких-нибудь условий. Соответственно, в программе должен использоваться или условный, или безусловный переход.

В STL используются следующие функции переходов:

JU метка Безусловный переход;

JC метка Переход, если RLO = "1";

JCN метка Переход, если RLO = "0";

JCB метка Переход, если RLO = "1", и сохранение RLO;

JNB метка Переход, если RLO = "0", и сохранение RLO;

JBI метка Переход, если BR = "1";

JNBI метка Переход, если BR = "0";

JZ метка Переход, если результат равняется "0";

JN метка Переход, если результат не равняется "0";

JP метка Переход, если результат больше "0";

JPZ метка Переход, если результат больше или равняется "0";

JM метка Переход, если результат меньше "0";

JMZ метка Переход, если результат меньше или равняется "0";

JUO метка Переход, если результат неверный;

JO метка Переход при переполнении (проверка бита OV);

JOS метка Переход при переполнении (проверка бита OS);

LOOP метка Переход циклический.

Инструкция для каждой функции перехода содержит оператор перехода и метку перехода. Оператор перехода определяет условие, которое проверяется, а метка показывает, в какой точке программы следует продолжать обработку программы в случае, когда условие для перехода выполняется.

Метка перехода может содержать до 4 символов алфавита и числового ряда, а также символ подчеркивания. Метка перехода не может начинаться из цифры. После метки перехода ставится двоеточие. Метка перехода указывает на выражение, которое должно обрабатываться после выполнения операции перехода.

Пример программирования с разветвлением:

L C 1; //Загрузить значение счетчика

L 50; //Загрузить условное значение

>I; //Программирование условия

JC M1; //Условный переход

… … //Продолжение программы при невыполнении условия

JU M2; //Безусловный переход

M1: … …//Метка продолжения программы при выполнении условия

M2: … …//Метка основной программы

В приведенном примере условием перехода является положительный результат операции сравнения RLO. При RLO = "1" выполняется переход к метке продолжения программы M1. При отрицательном результате операции сравнения (RLO = "0") переход к M1 не выполняется.

Переход может выполняться в любом направлении программы, однако только внутри блока. Метка перехода должна иметь уникальный идентификатор.

При программировании на языке STL идентификаторы меток хранятся в соответствующей части блока на носителях данных программатора PG. По этой причине изменения в программе блока, сделанные в CPU в интерактивном режиме, должны быть также выполнены и в программаторе.