# 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 |