# NEG
# Two's Complement Negation
| Opcode | Mnemonic | Description |
|---|---|---|
| F6 /3 | NEG r/m8 | Two's complement negate r/m8. |
| F7 /3 | NEG r/m16 | Two's complement negate r/m16. |
| F7 /3 | NEG r/m32 | Two's complement negate r/m32. |
# Description
Replaces the value of operand (the destination operand) with its two's complement. (This operation is equivalent to subtracting the operand from 0.) The destination operand is located in a general-purpose register or a memory location.
This instruction can be used with a LOCK prefix to allow the instruction to be executed atomically.
# Operation
if(Destination == 0) CF = 0;
else CF = 1;
Destination = -Destination;
1
2
3
4
2
3
4
# Flags affected
The CF flag set to 0 if the source operand is 0; otherwise it is set to 1. The OF, SF, ZF, AF, and PF flags are set according to the result.
# Protected Mode Exceptions
# Real-Address Mode Exceptions
| #GP | If a memory operand effective address is outside the CS, DS, ES, FS, or GS segment limit. |
| #GP | If a memory operand effective address is outside the CS, DS, ES, FS, or GS segment limit. |
# Virtual-8086 Mode Exceptions
| Instruction | Latency | Throughput | Execution Unit |
|---|---|---|---|
| CPUID | 0F3n/0F2n | 0F3n/0F2n | 0F2n |
| NEG | 1/0.5 | 0.5/0.5 | ALU |