Logic ; FSUB source ; FSUB and FSUBP ST ← ST - source ST(1) ← ST(1) - ST pop ST
; FSUB dest, source ; FSUBP dest, ST ST(dest) ← ST(dest) - ST(src) ST(dest) ← ST(dest) - ST pop ST
FSUB/FSUBP subtract the source operand from the destination operand and leave the difference in the destination operand.
The one-operand form of FSUB subtracts a (single or double real) memory operand from ST. The two-operand form of FSUB calculates the difference between two register operands (ST must be one of these) and returns the result to destination. FSUBP works like the two-operand FSUB but requires ST to be the source operand; it also pops the stack. The no-operand forms FSUB and FSUBP equal 'FSUBP ST(1), ST'.
Opcode Format D8 /4 FSUB m32 DC /4 FSUB m64 D8 E0 + i FSUB ST,ST(i) DC E8 + i FSUB ST(i),ST DE E8 + i FSUBP ST(i),ST DE E9 FSUB DE E9 FSUBP
Timing Variations/ operand 8087 287 387 486 Pentium fsub reg 70-100 70-100 26-37 8-20 3/1 FX fsub m32 (90-120)+EA 90-120 24-32 8-20 3/1 FX fsub m64 (95-125)+EA 95-125 28-36 8-20 3/1 FX fsubp reg 75-105 75-105 26-34 8-20 3/1 FX