20 Вопрос Операторы циклов, условных и безусловных переходов, условный оператор.
Операторы безусловных переходов
осуществляет переход на указанную метку, независимо ни от каких условий. синтаксис:
JMP <метка>
вместо JMP использовать обозначение GOTO.
Операторы условных переходов
Техно IL поддерживает три оператора условных переходов. Они имеют следующий синтаксис:
JMPC <метка>
JMPN <метка>
JMPX <метка>
Первый из них осуществляет переход на указанную метку при значении истина переменной CMP, второй – при значении ложь, а последний – значение аккумулятора отличном от 0. Вместо JMP можно писать GOTO.
Условный оператор
синтаксис:
IF
<текст программы>
THEN
<текст программы>
ELSE
<текст программы>
END_IF
Текст программы между словами IF и THEN должен содержать операции, формирующие значение переменной CMP. Она анализируется после выполнения этого фрагмента. В случае истинности выполняется фрагмент программы между THEN и ELSE. В противном случае - между ELSE и END_IF.
21 Вопрос
Операторы циклов
существует два оператора циклов, оператор с предварительной проверкой завершения цикла и оператор с последующей проверкой завершения цикла.
Первый оператор:
WHILE <операнд>
<текст программы>
END_WHILE
Здесь фрагмент программы между строками начала и конца цикла будет выполняться, пока значение операнда не станет равно 0.
Второй оператор цикла проверяет значения операнда на равенство 0 не в его начале, а в конце цикла.
REPEAT
<текст программы>
UNTIL <операнд>
Для принудительного выхода из цикла служит оператор
BREAK
При его выполнении работа цикла завершается и выполняется следующая после цикла инструкция.
Операторы подстановки имен переменных, обмена с аккумулятором; завершения программы
22 Вопрос
Оператор #DEFINE
Позволяет использовать в тексте IL-программы любые имена для входных и выходных переменных типа I и Q.
Оператор #DEFINE имеет следующий синтаксис:
#DEFINE <операнд> <name>,
где
операнд – имя переменной в терминах идентификаторов I и Q,
name – мнемоническое имя. В
пример
#define I0 LEVEL
#define Q0 REG
в метапрограммах рассматриваемый оператор не применяется.
Операторы обмена с аккумулятором
Предназначены для обмена данными с переменной result (аккумулятор).
Синтаксис
LD <операнд>
ST <операнд>
LD записывает в аккумулятор значение операнда. ST – копирует значение аккумулятора в указанный операнд.
Операторы обмена с файлами данных
Техно IL позволяет формировать значения переменных типа W, считывая их из файлов, и сохранять их в файлы. Для этого предусмотрены три оператора.
READ <операнд1> <операнд2>
WRITE <операнд1> <операнд2>
PRINT <операнд1> <операнд2>
Оператор READ предназначен для считывания переменных типа W из файла. При выполнении этого оператора считываются переменные, начиная с номера 0 до переменной с номером, заданным в операнд1. Значение второго операнда указывает файл, из которого будут считываться данные. Этот файл должен иметь текстовый формат. Его имя формируется следующим образом:
W<число>.txt ,
где число – значение второго операнда.
Каждая строка файла должна содержать два числа, разделенных пробелом. Первое число – это номер переменной, а второе – ее значение. При выполнении оператора READ переменной присваивается последнее в файле значение с соответствующим номером.
Операторы WRITE и PRINT предназначены для записи значений переменных типа W в файлы. При этом формируются файлы данных в текстовом формате. Формирование имен файлов, формат записи данных в них и назначение операндов соответствуют описанным выше для оператора READ. Отличие оператора WRITE от PRINT заключается в том, что первый из них перед сохранением стирает содержимое указанного файла, а последний дописывает данные в конец файла.
Аргументы <операнд1> и <операнд2> функций READ, WRITE, PRINT имеют диапазон от 0 до 255, если задаются константой. Для того, чтобы задать это значение в больших диапазонах, необходимо использовать дополнительную переменную.
Оператор вызова функциональных блоков
Этот оператор позволяет обратиться к стандартным функциональным блокам, реализованным в языке Техно FBD.
Недоступными для вызова являются блоки из раздела Моделирование, блоки, содержавшие внутренние статические переменные (PID, интегратор и пр.), и блоки логических, арифметических и условных операций, реализованных в Техно IL.
Синтаксис:
CALL <имя блока> <номер блока> (arg_1, …, arg_N)
где
-
имя блока
- название блока, выводимое на функциональных кнопках диалога Меню FBD;
реализация
- номер использования блока в программе.;
arg_1,…, arg_N
- список аргументов. Количество аргументов в списке должно быть равно сумме функциональных входов и выходов блока. Первыми в списке записываются аргументы, связанные с входами блока.
