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