122. SUBtract with eXtend

122.1. Name

SUBX -- Subtract with extend

122.2. Synopsis

        SUBX        Dy,Dx
        SUBX        -(Ay),-(Ax)

        Size = (Byte, Word, Long)

122.3. Function

Subtracts the source operand to the destination operand along with the extend bit, and stores the result in the destination location. The subtraction is performed using binary coded decimal arithmetic. The operands, which are packed BCD numbers, can be addressed in two different ways:

  • Data register to data register: The operands are contained in the data registers specified in the instruction.

  • Memory to memory: The operands are addressed with the predecrement addressing mode using the address registers specified in the instruction.

The size of operation can be specified as byte, word, or long.

Normally the Z condition code bit is set via programming before the start of an operation. That allows successful tests for zero results upon completion of multiple-precision operations.

122.4. Format

        -----------------------------------------------------------------
        |15 |14 |13 |12 |11 |10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
        |---|---|---|---|-----------|---|-------|---|---|---|-----------|
        | 1 | 0 | 0 | 1 |    Rx     | 1 | SIZE  | 0 | 0 |R/M|    Ry     |
        -----------------------------------------------------------------

        R/M = 0 -> data register
        R/M = 1 -> address register
        Rx:   destination register
        Ry:   source register

SIZE
        00->one Byte operation
        01->one Word operation
        10->one Long operation

122.5. Result

        X - Set the same as the carry bit.
        N - Set if the result is negative. Cleared otherwise.
        Z - Cleared if the result is non-zero. Unchanged otherwise.
        V - Set if an overflow is generated. Cleared otherwise.
        C - Set if a carry is generated. Cleared otherwise.

122.6. See also

ADD ADDI SUB SUBI ADDX