SUBABS

Instruction: Subtract an absolute value from another value.

SUBABS Value, < # > SValue


Result: Difference of Value and absolute of signed SValue is stored in Value.

  • Value (d-field) is the register containing the value to subtract the absolute of SValue from, and is the destination in which to write the result.
  • SValue (s-field) is a register or a 9-bit literal whose absolute value is subtracted from Value.

Opcode Table:

–INSTR–  ZCRI –CON–    –DEST–         –SRC–

Z Result

C Result

Result

Clocks

 100011    001i    1111    ddddddddd    sssssssss

D - |S| = 0

Unsigned Borrow1

Written

4

1 If S is negative, C Result is the inverse of unsigned carry (for D + S).

Concise Truth Table:

In

Out

Destination1

Source

Z

C

Effects

Destination

Z

C

$0000_0003; 3

$FFFF_FFFC; -4

-

-

wz wc

$FFFF_FFFF; 4,294,967,295

0

0

$0000_0003; 3

$FFFF_FFFD; -3

-

-

wz wc

$0000_0000; 0

1

1

$0000_0003; 3

$FFFF_FFFE; -2

-

-

wz wc

$0000_0001; 1

0

1

$0000_0003; 3

$FFFF_FFFF; -1

-

-

wz wc

$0000_0002; 2

0

1

$0000_0003; 3

$0000_0002; 2

-

-

wz wc

$0000_0001; 1

0

0

$0000_0003; 3

$0000_0003; 3

-

-

wz wc

$0000_0000; 0

1

0

$0000_0003; 3

$0000_0004; 4

-

-

wz wc

$FFFF_FFFF; 4,294,967,295

0

1

1 Destination is treated as an unsigned value.

Explanation

SUBABS subtracts the absolute of SValue from Value and stores the result into the Value register.

If the WZ effect is specified, the Z flag is set (1) if Value − |SValue| equals zero. If the WC effect is specified, the C flag is set (1) if the subtraction resulted in an unsigned borrow (32 bit overflow). The result is written to Value unless the NR effect is specified.

Unless otherwise noted, content on this site is licensed under the
Creative Commons Attribution-ShareAlike 4.0 International License.