Individual Instruction Descriptions
4-176
4.14.80 SUB Subtract
Syntax
[label] name dest, src, src1, [next A]] Clock, clk Word, w With RPT, clk Class
SUB An[~], An, {adrs} [, next A] Table 4–46 Table 4–46 1a
SUB An[~], An[~], imm16 [, next A] 2 2 N/R 2b
SUB An[~], An[~], PH [, next A] 1 1 n
R
+3 3
SUB An[~], An, An~ [, next A] 1 1 n
R
+3 3
SUB An[~], An~, An [, next A] 1 1 n
R
+3 3
SUB Rx, imm16 2 2 N/R 4c
SUB Rx, R5 1 1 N/R 4d
Execution [premodify AP if mod specified]
dest ⇐ dest – src1 (for two operands)
dest ⇐ src – src1 (for three operands)
PC ⇐ PC + w
Flags Affected dest is An: OF, SF, ZF, CF are set accordingly
dest is Rx: RCF, RZF are set accordingly
src1 is {adrs}: TAG bit is set accordingly
Opcode
Instructions 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
SUB An[~], An, {adrs} [, next A]
0 0 0 0 ~A next A An adrs
x dma16 (for direct) or offset16 (long relative) [see section 4.13]
SUB An[~], An[~], imm16 [, next A] 1 1 1 0 0 next A An 0 1 0 0 0 1 A~ ~A
SUB An[~], An[~], PH [, next A] 1 1 1 0 0 next A An 0 1 1 0 0 0 A~ ~A
SUB An[~], An, An~ [, next A] 1 1 1 0 0 next A An 0 0 1 0 0 0 0 ~A
SUB An[~], An~, An [, next A] 1 1 1 0 0 next A An 0 0 1 0 0 0 1 ~A
SUB Rx, imm16 1 1 1 1 1 1 1 0 0 0 0 1 Rx 0 0
SUB Rx, R5 1 1 1 1 1 1 1 0 0 1 0 1 Rx 0 0
Description Subtract value of src from value of dest and store result in dest. If three
operands are specified, then subtract value of src1 from value of src (i.e.,
src-src1) and store result in dest string. Premodification of accumulator
pointers is allowed with some operand types. Note that subtraction is
performed in 2’s complement and therefore the CF (carry flag) may get set
even when subtracting a smaller value from a larger value.