Next: , Previous: Arithmetic operators, Up: MIX instruction set


2.1.2.5 Address transfer operators

In these instructions, `M' (the address of the instruction after indexing) is used as a number instead of as the address of a memory cell. Consequently, `M' can have any valid word value (i.e., it's not limited to the 0-3999 range of a memory address).

ENTA
Enter `M' in [rA]. OPCODE = 48, MOD = 2. rA <- M.
ENTX
Enter `M' in [rX]. OPCODE = 55, MOD = 2. rX <- M.
ENTi
Enter `M' in [rIi]. OPCODE = 48 + i, MOD = 2. rIi <- M.
ENNA
Enter `-M' in [rA]. OPCODE = 48, MOD = 3. rA <- -M.
ENNX
Enter `-M' in [rX]. OPCODE = 55, MOD = 3. rX <- -M.
ENNi
Enter `-M' in [rIi]. OPCODE = 48 + i, MOD = 3. rIi <- -M.
INCA
Increase [rA] by `M'. OPCODE = 48, MOD = 0. rA <- rA + M.
INCX
Increase [rX] by `M'. OPCODE = 55, MOD = 0. rX <- rX + M.
INCi
Increase [rIi] by `M'. OPCODE = 48 + i, MOD = 0. rIi <- rIi + M.
DECA
Decrease [rA] by `M'. OPCODE = 48, MOD = 1. rA <- rA - M.
DECX
Decrease [rX] by `M'. OPCODE = 55, MOD = 1. rX <- rX - M.
DECi
Decrease [rIi] by `M'. OPCODE = 48 + i, MaOD = 0. rIi <- rIi - M.

In the above instructions, the subfield `ADDRESS' acts as an immediate (indexed) operand, and allow us to set directly the contents of the MIX registers without an indirection to the memory cells (in a real CPU this would mean that they are faster that the previously discussed instructions, whose operands are fetched from memory). So, if you want to store in `rA' the value -2000 (- 00 00 00 31 16), you can use the binary instruction + 31 16 00 03 48, or, symbolically,

     ENNA 2000

Used in conjuction with the store operations (`STA', `STX', etc.), these instructions also allow you to set memory cells contents to concrete values.

Note that in these address transfer operators, the `MOD' field is not a subfield specificator, but serves to define (together with `OPCODE') the concrete operation to be performed.