Программы на языке ЯОЛС-М состоят из строк, содержащих не более одного оператора на строку.
Основные элементы языка:
Для задания переменных в ЯОЛС-М используется оператор объявить. Это декларативный оператор с следующим синтаксисом:
объявить имя_переменной(размер)
Где имя_переменной - имя переменной/участка памяти/регистра, что может включать латинницу, кириллицу, знак подчеркивания _, и цифры (но не может начинаться с цифры), а размер - длина переменной, в битах.
Например, если мы хотим обозначить регистр Р0, что может принимать значения от 0 до 31 (25-1), строка объявления будет выглядеть так:
объявить р0(5)
Если нужно задать несколько переменных, это может быть сделано отдельными строками, или же через запятую в одной строке:
объявить имя_переменной1(длина1), имя_переменной2(длина2)
Если необходимо регистр Р0 размером 5 бит, и регистр Р1 размером 9 бит, это можно было бы сделать следующим образом:
объявить р0(5), р1(9)
Для объявления памяти (или массива), перед размером добавляется вторая скобка с количеством ячеек:
объявить п(256)(32)
Это объявит переменную "п" (память) с 256-ю ячейками размером по 32 бит.
ЯОЛС-М поддерживает указание числовых значений в десятичной, двоичной,
и шестнадцатеричной системах счисления.
Данные в десятичной системе указываются следующим образом:
21
42
Данные в шестнадцатеричной системе указываются с префиксом $:
$15
$2A
Данные в двоичной системе указываются с префиксом #:
#010101
#101010
В языке ЯОЛС-М поддерживаются как однострочные, так и многострочные комментарии.
Однострочные комментарии начинаются с символа %,
и распространяются до конца текущей строки:
% текст комментария
Многострочные комментарии начинаются с символа {, и прерываются символом }:
{
Это текст многострочного комментария.
Он не влияет на ход выполнения программы.
}
Многострочные комментарии так же могут быть использованы для исключения фрагментов кода из текста микро-программы,
ЯОЛС-М предполагает использование строк в операциях ввода-вывода, ограничивая их одинарными или двойными кавычками:
'Текст'
"Текст"
В случае потребности вывода самих кавычек, строка может быть указана в другом количестве кавычек, то есть:
'Текст "в кавычках"'
"Текст 'в кавычках'"
Будут одинаково верны. Для большей гибкости, ЯОЛС-М так же поддерживает экранирование символов в формате, аналогичном C/C++ (\', \", \n, ...).
Метки (англ. label) используются для указания смещений в микропрограмме.
Синтаксис меток в ЯОЛС-М мало чем отличается от общепринятого:
имя_метки:
Подобно переменным, имена меток могут содержать латиницу, кириллицу, и цифры:
метка1:
2:
Для получения данных от пользователя, в ЯОЛС-М используется оператор ввести:
ввести имя_переменной
Где имя_переменной - имя переменной,
объявленной с помощью оператора объявить.
То есть, для ввода пользователем значения переменной
р0 может быть использован следующий код:
ввести р0
Во время выполнения, оператор ввести приостанавливает выполнение микропрограммы, и отображает поле ввода правой секции.
Данные могут вводится в одном из трех форматов (двоичном, шестнадцатеричном, или десятичном), после чего значение записывается в переменную и программа продолжает работу.
Аналогично оператору объявить, можно передать несколько аргументов через запятую, что для данного оператора будет означать ввод подряд значений нескольких переменных:
ввести р0, р1
Размеры поля ввода автоматически подстраиваются под длину переменной.
Для вывода значений на экран, в ЯОЛС-М поддерживается оператор печать:
печать значение
Где значение - имя переменной, число, или строка.
Подобно ранее описанным операторам,
печать так же может принимать более одного аргумента,
что позволяет выводить несколько значений на одной строке:
печать "р0:", р0
Вывод значений переменных идет в трёх системах счисления (двоичной, шестнадцатеричной, десятичной), аналогично формату ввода.
Для проведения операций над значениями, в ЯОЛС-М предусмотрен оператор операция:
операция переменная действие значение
Где переменная - ранее заданная переменная, значение - константа, или же другая переменная, а действие может быть одним из множества поддерживаемых действий, таких как:
+: Сложение
-: Вычитание
&: Битовое "И"
|: Битовое "ИЛИ"
^: Битовое исключающее "ИЛИ" (так же известно, как сложение по модулю 2)
<<: Сдвиг влево
>>: Сдвиг вправо
|<, <<<: Цикличный сдвиг влево
>|, >>>: Цикличный сдвиг вправо
+!: Сложение с цикличным переносом
Слово "операция" писать не обязательно.
Сложение двух регистров может быть проведено так:
р0 + р1
Помимо описанных выше операторов, ЯОЛС-М так же поддерживает оператор инверсии !, не требующий второго аргумента. Так, для инверсии значения регистра может быть использован следующий код:
р0!
Оператором безусловного перехода в ЯОЛС-М является идти_к:
идти_к имя_метки
Где имя_метки - имя существующей метки.
Например, следующий код "обойдет" вывод текста:
идти_к метка1
печать "Невыводимый текст"
метка1: печать "Выводимый текст"
Для разветвлений и проверок, в ЯОЛС-М есть оператор если:
если значение1 сравнение значение2 то действие
Где сравнение - оператор сравнения, такой, как
=, <>, <, <=, >, >=,
а действие - запускаемый в случае выполнения условия оператор.
Например, для проверки соответствия значения регистра можно использовать следующий код:
если р0 = 4 то печать "р0 равен 4."
Для краткости, ключевое слово "то" может быть опущено.
Оператор идти_к может быть использован вместе с оператором если
для получения условного перехода.
По умолчанию, программа на языке ЯОЛС-М завершает свое выполнение по достижению конца программы (перехода за последнюю строку). Но, в случае необходимости, процесс выполнения программы так же может быть завершен насильно с помощью оператора конец:
конец
Для простоты использования, так же можно указать строку с причиниой прекращения выполнения, например:
конец "Переполнение."
Выведет текст "Переполнение." и завершит выполнение программы.