diff --git a/X86Disassembler/X86/Handlers/FloatingPoint/Arithmetic/Fprem1Handler.cs b/X86Disassembler/X86/Handlers/FloatingPoint/Arithmetic/Fprem1Handler.cs
new file mode 100644
index 0000000..872fff6
--- /dev/null
+++ b/X86Disassembler/X86/Handlers/FloatingPoint/Arithmetic/Fprem1Handler.cs
@@ -0,0 +1,61 @@
+namespace X86Disassembler.X86.Handlers.FloatingPoint.Arithmetic;
+
+///
+/// Handler for FPREM1 instruction (D9 F5) - Computes the IEEE-compliant partial remainder of ST(0) รท ST(1)
+///
+public class Fprem1Handler : InstructionHandler
+{
+ ///
+ /// Initializes a new instance of the Fprem1Handler class
+ ///
+ /// The instruction decoder that owns this handler
+ public Fprem1Handler(InstructionDecoder decoder)
+ : base(decoder)
+ {
+ }
+
+ ///
+ /// Checks if this handler can decode the given opcode
+ ///
+ /// The opcode to check
+ /// True if this handler can decode the opcode
+ public override bool CanHandle(byte opcode)
+ {
+ // FPREM1 is D9 F5
+ if (opcode != 0xD9) return false;
+
+ if (!Decoder.CanReadByte())
+ return false;
+
+ // Check if the next byte is F5
+ byte nextByte = Decoder.PeakByte();
+ return nextByte == 0xF5;
+ }
+
+ ///
+ /// Decodes an FPREM1 instruction
+ ///
+ /// The opcode of the instruction
+ /// The instruction object to populate
+ /// True if the instruction was successfully decoded
+ public override bool Decode(byte opcode, Instruction instruction)
+ {
+ if (!Decoder.CanReadByte())
+ return false;
+
+ // Read the second byte of the opcode
+ byte secondByte = Decoder.ReadByte();
+
+ // Verify the opcode is correct
+ if (secondByte != 0xF5)
+ return false;
+
+ // Set the instruction type
+ instruction.Type = InstructionType.Fprem1;
+
+ // FPREM1 has no operands
+ instruction.StructuredOperands = [];
+
+ return true;
+ }
+}
diff --git a/X86Disassembler/X86/Handlers/FloatingPoint/Arithmetic/FxtractHandler.cs b/X86Disassembler/X86/Handlers/FloatingPoint/Arithmetic/FxtractHandler.cs
new file mode 100644
index 0000000..78f57e5
--- /dev/null
+++ b/X86Disassembler/X86/Handlers/FloatingPoint/Arithmetic/FxtractHandler.cs
@@ -0,0 +1,61 @@
+namespace X86Disassembler.X86.Handlers.FloatingPoint.Arithmetic;
+
+///
+/// Handler for FXTRACT instruction (D9 F4) - Extracts the exponent and significand from the ST(0) value
+///
+public class FxtractHandler : InstructionHandler
+{
+ ///
+ /// Initializes a new instance of the FxtractHandler class
+ ///
+ /// The instruction decoder that owns this handler
+ public FxtractHandler(InstructionDecoder decoder)
+ : base(decoder)
+ {
+ }
+
+ ///
+ /// Checks if this handler can decode the given opcode
+ ///
+ /// The opcode to check
+ /// True if this handler can decode the opcode
+ public override bool CanHandle(byte opcode)
+ {
+ // FXTRACT is D9 F4
+ if (opcode != 0xD9) return false;
+
+ if (!Decoder.CanReadByte())
+ return false;
+
+ // Check if the next byte is F4
+ byte nextByte = Decoder.PeakByte();
+ return nextByte == 0xF4;
+ }
+
+ ///
+ /// Decodes an FXTRACT instruction
+ ///
+ /// The opcode of the instruction
+ /// The instruction object to populate
+ /// True if the instruction was successfully decoded
+ public override bool Decode(byte opcode, Instruction instruction)
+ {
+ if (!Decoder.CanReadByte())
+ return false;
+
+ // Read the second byte of the opcode
+ byte secondByte = Decoder.ReadByte();
+
+ // Verify the opcode is correct
+ if (secondByte != 0xF4)
+ return false;
+
+ // Set the instruction type
+ instruction.Type = InstructionType.Fxtract;
+
+ // FXTRACT has no operands
+ instruction.StructuredOperands = [];
+
+ return true;
+ }
+}
diff --git a/X86Disassembler/X86/Handlers/InstructionHandlerFactory.cs b/X86Disassembler/X86/Handlers/InstructionHandlerFactory.cs
index 479167c..776cdba 100644
--- a/X86Disassembler/X86/Handlers/InstructionHandlerFactory.cs
+++ b/X86Disassembler/X86/Handlers/InstructionHandlerFactory.cs
@@ -415,6 +415,8 @@ public class InstructionHandlerFactory
_handlers.Add(new FloatingPoint.Transcendental.Fyl2xHandler(_decoder)); // FYL2X (D9 F1)
_handlers.Add(new FloatingPoint.Transcendental.FptanHandler(_decoder)); // FPTAN (D9 F2)
_handlers.Add(new FloatingPoint.Transcendental.FpatanHandler(_decoder)); // FPATAN (D9 F3)
+ _handlers.Add(new FloatingPoint.Arithmetic.FxtractHandler(_decoder)); // FXTRACT (D9 F4)
+ _handlers.Add(new FloatingPoint.Arithmetic.Fprem1Handler(_decoder)); // FPREM1 (D9 F5)
// Other floating point handlers
_handlers.Add(new FloatingPoint.Control.FnstswHandler(_decoder)); // FNSTSW AX (DF E0)