Undocumented Instructions
The x86 CPUs contain undocumented instructions which are implemented on the chips but not listed in some official documents. They can be found in various sources across the Internet, such as Ralf Brown's Interrupt List and at http://sandpile.org.
Mnemonic | Opcode | Description | Status |
---|---|---|---|
AAM imm8 | D4 imm8 | Divide AL by imm8, put the quotient in AH, and the remainder in AL | Available beginning with 8086, documented since Pentium (earlier documentation lists no arguments) |
AAD imm8 | D5 imm8 | Multiplication counterpart of AAM | Available beginning with 8086, documented since Pentium (earlier documentation lists no arguments) |
SALC | D6 | Set AL depending on the value of the Carry Flag (a 1-byte alternative of SBB AL, AL) | Available beginning with 8086, but only documented since Pentium Pro. |
UD1 | 0F B9 | Intentionally undefined instruction, but unlike UD2 this was not published | |
ICEBP | F1 | Single byte single-step exception / Invoke ICE | Available beginning with 80386, documented (as INT1) since Pentium Pro |
LOADALL | 0F 05 | Loads All Registers from Memory Address 0x000800H | Only available on 80286 |
Unknown mnemonic | 0F 04 | Exact purpose unknown, causes CPU hang. (the only way out is CPU reset)
In some implementations, emulated through BIOS as a halting sequence. |
Only available on 80286 |
LOADALLD | 0F 07 | Loads All Registers from Memory Address ES:EDI | Only available on 80386 |
POP CS | 0F | Pop top of the stack into CS Segment register (causing a far jump) | Only available on earliest models of 8086. Beginning with 80286 this opcode is used as a prefix for 2-Byte-Instructions |
MOV CS,r/m | 8E/1 | Moves a value from register/memory into CS Segment register (causing a far jump) | Only available on earliest models of 8086. Beginning with 80286 this opcode causes an invalid opcode exception |
MOV ES,r/m | 8E/4 | Moves a value from register/memory into ES segment register | Only available on earliest models of 8086. On 80286 this opcode causes an invalid opcode exception. Beginning with 80386 the value is moved into the FS segment register. |
MOV CS,r/m | 8E/5 | Pop top of the stack into CS Segment register (?) | Only available on earliest models of 8086. On 80286 this opcode causes an invalid opcode exception. Beginning with 80386 the value is moved into the GS segment register. |
MOV SS,r/m | 8E/6 | Moves a value from register/memory into SS Segment register | Only available on earliest models of 8086. Beginning with 80286 this opcode causes an invalid opcode exception |
MOV DS,r/m | 8E/7 | Moves a value from register/memory into DS Segment register | Only available on earliest models of 8086. Beginning with 80286 this opcode causes an invalid opcode exception |
Read more about this topic: X86 Instruction Listings
Famous quotes containing the word instructions:
“They had supposed their formula was fixed.
They had obeyed instructions to devise
A type of cold, a type of hooded gaze.
But when the Negroes came they were perplexed.
These Negroes looked like men....”
—Gwendolyn Brooks (b. 1917)