X86 Instructions - Undocumented Instructions

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 Instructions

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)