diff --git a/X86Disassembler/X86/Handlers/ArithmeticUnary/NegRm8Handler.cs b/X86Disassembler/X86/Handlers/ArithmeticUnary/NegRm8Handler.cs
new file mode 100644
index 0000000..3e5c3c0
--- /dev/null
+++ b/X86Disassembler/X86/Handlers/ArithmeticUnary/NegRm8Handler.cs
@@ -0,0 +1,68 @@
+using X86Disassembler.X86.Operands;
+
+namespace X86Disassembler.X86.Handlers.ArithmeticUnary;
+
+/// 
+/// Handler for NEG r/m8 instruction (0xF6 /3)
+/// 
+public class NegRm8Handler : InstructionHandler
+{
+    /// 
+    /// Initializes a new instance of the NegRm8Handler class
+    /// 
+    /// The instruction decoder that owns this handler
+    public NegRm8Handler(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)
+    {
+        if (opcode != 0xF6)
+            return false;
+
+        // Check if the reg field of the ModR/M byte is 3 (NEG)
+        if (!Decoder.CanReadByte())
+            return false;
+
+        var reg = ModRMDecoder.PeakModRMReg();
+
+        return reg == 3; // 3 = NEG
+    }
+
+    /// 
+    /// Decodes a NEG r/m8 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)
+    {
+        // Set the instruction type
+        instruction.Type = InstructionType.Neg;
+
+        if (!Decoder.CanReadByte())
+        {
+            return false;
+        }
+
+        // Read the ModR/M byte
+        // For NEG r/m8 (0xF6 /3):
+        // - The r/m field with mod specifies the operand (register or memory)
+        var (_, reg, _, operand) = ModRMDecoder.ReadModRM8();
+
+        // Set the structured operands
+        // NEG has only one operand
+        instruction.StructuredOperands = 
+        [
+            operand
+        ];
+
+        return true;
+    }
+}
diff --git a/X86Disassembler/X86/Handlers/InstructionHandlerFactory.cs b/X86Disassembler/X86/Handlers/InstructionHandlerFactory.cs
index 9d69a35..a2c0378 100644
--- a/X86Disassembler/X86/Handlers/InstructionHandlerFactory.cs
+++ b/X86Disassembler/X86/Handlers/InstructionHandlerFactory.cs
@@ -90,8 +90,9 @@ public class InstructionHandlerFactory
         // NOT handler
         _handlers.Add(new NotRm32Handler(_decoder));
 
-        // NEG handler
-        _handlers.Add(new NegRm32Handler(_decoder));
+        // NEG handlers
+        _handlers.Add(new NegRm8Handler(_decoder));  // F6 /3 - NEG r/m8
+        _handlers.Add(new NegRm32Handler(_decoder)); // F7 /3 - NEG r/m32
 
         // MUL handler
         _handlers.Add(new MulRm32Handler(_decoder));