Next: Shift operators, Previous: Input-output operators, Up: MIX instruction set [Contents][Index]

The following instructions convert between numerical values and their character representations.

`NUM`

Convert rAX, assumed to contain a character representation of a number, to its numerical value and store it in rA. OPCODE = 5, MOD = 0.

`CHAR`

Convert the number stored in rA to a character representation and store it in rAX. OPCODE = 5, MOD = 1.

Digits are represented in MIX by the range of values 30-39 (digits
0-9). Thus, if the contents of ‘`rA`’ and ‘`rX`’ are, for instance,

[rA] = + 30 30 31 32 33 [rX] = + 31 35 39 30 34

the represented number is 0012315904, and ‘`NUM`’ will store this
value in ‘`rA`’ (i.e., we end up with ‘`[rA]`’ = + 0 46 62 52 0 = 12315904).

If any byte in ‘`rA`’ or ‘`rB`’ does not belong to the range
30-39, it is interpreted by ‘`NUM`’ as the digit obtained by taking
its value modulo 10. E.g. values 0, 10, 20, 30, 40, 50, 60 all represent the
digit 0; 2, 12, 22, etc. represent the digit 2, and so on. For
instance, the number 0012315904 mentioned above could also be
represented as

[rA] = + 10 40 31 52 23 [rX] = + 11 35 49 20 54

‘`CHAR`’ performs the inverse operation, using only the values 30
to 39 for representing digits 0-9.