Next: W-expressions, Previous: MIXAL directives, Up: MIXAL [Contents][Index]

The `ADDRESS`

, `INDEX`

and `MOD`

fields of a MIXAL
instruction can be expressions, formed by numbers, identifiers and
binary operators (`+ - * / // :`

). `+`

and `-`

can also
be used as unary operators. Operator precedence is from left to right:
there is no other operator precedence rule, and parentheses cannot be
used for grouping. A stand-alone asterisk denotes the current memory
location; thus, for instance,

4+2**

evaluates to 6 (4 plus 2) times the current memory location. White space is not allowed within expressions.

The special binary operator `:`

has the same meaning as in fspecs,
i.e.,

A:B = 8*A + B

while `A//B`

stands for the quotient of the ten-byte number `A`

00 00 00 00 00 (that is, A right-padded with 5 null bytes or, what amounts
to the same, multiplied by 64 to the fifth power) divided by
`B`

. Sample expressions are:

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)

Note that all MIXAL expressions evaluate to a MIX word (by definition).

All symbols appearing within an expression must be previously defined. Future
references are only allowed when appearing standalone (or modified by
an unary operator) in the `ADDRESS`

part of a MIXAL instruction,
e.g.

* OK: stand alone future reference STA -S1(1:5) * ERROR: future reference in expression LDX 2-S1 S1 LD1 2000