Node:Выражения, Next:, 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