Node:Выражения, Next:W-выражения, Previous:Директивы MIXAL, Up:MIXAL
Поля ADDRESS, INDEX и MOD инструкции MIXAL могут
быть выражениями, состоящими из чисел, идентификаторов и знаков бинарных
операций (+ - * / // :). + и - могут также использоваться
как знаки унарных операций. Операторы выполняются слева направо, других
правил приоритета операторов нет, и использовать скобки для группировки
нельзя. Отдельная звёздочка обозначает текущее положение в памяти. Так,
например:
4+2**
обозначает 6 (4+2), умноженное на текущее положение в памяти. Пробелы внути выражений не допускаются.
Специальная бинарная операция : имеет то же значения, что и в
спецификациях полей, т.е.
A:B = 8*A + B
в то время как A//B обозначает деление 10-байтового числа
A 00 00 00 00 00 (A, дополненное справа пятью нулевыми байтами,
или, что то же самое, умноженное на 64 в пятой степени), разделённое
на B. Примеры выражений:
18-8*3 = 30 14/3 = 4 1+3:11 = 4:11 = 43 1//64 = (01 00 00 00 00 00)/(00 00 00 01 00) = (01 00 00 00 00)
Имейте в виду, что любое выражение MIXAL вычисляет слово MIX (по определению).
Все символы, встречающиеся в выражениях, должны бы предварительно определены.
Ссылки вперёд допускаются только если встречаются отдельно (или с унарной
операцией) в части ADDRESS инструкции MIXAL, например:
* OK: отдельная ссылка вперёд
STA -S1(1:5)
* ERROR: ссылка вперёд в выражении
LDX 2-S1
S1 LD1 2000