FSUBR           Subtract real reversed               Exceptions: I D O U P
FSUBRP Subtract real reversed and pop C3 C2 C1 C0: ? ? * ?

FSUBR [[destination,] source]
FSUBRP [destination, ST]

Logic ; FSUBR source ; FSUBR and FSUBRP
ST ← source - ST ST(1) ← ST - ST(1)
pop ST

; FSUBR dest, source ; FSUBRP dest, ST
ST(dest) ← ST(src) - ST(dest) ST(dest) ← ST - ST(dest)
pop ST

FSUBR/FSUBRP subtract the destination operand from the source
operand and return the result to the destination operand.

The one-operand form of FSUBR replaces ST with the difference
between a (single or double real) memory operand and ST.
The two-operand form of FSUBR calculates the difference between two
register operands (ST must be one of these) and returns the result
to the destination register.
FSUBRP works like the two-operand FSUBR but requires ST to be the
source operand; it also pops the stack.
The no-operand forms FSUBR and FSUBRP equal 'FSUBRP ST(1), ST'.


Opcode Format
D8 /5 FSUBR m32
DC /5 FSUBR m64
D8 E8 + i FSUBR ST,ST(i)
DC E0 + i FSUBR ST(i),ST
DE E0 + i FSUBRP ST(i),ST
DE E1 FSUBR
DE E1 FSUBRP


Timing
Variations/
operand 8087 287 387 486 Pentium
fsubr reg 70-100 70-100 26-37 8-20 3/1 FX
fsubr m32 (90-120)+EA 90-120 24-32 8-20 3/1 FX
fsubr m64 (95-125)+EA 95-125 28-36 8-20 3/1 FX
fsubrp reg 75-105 75-105 26-34 8-20 3/1 FX