At some point during the evolution, Intel ran out of opcodes, so one opcode, 0xFF, was designated as an escape code to permit a second instruction byte. The opcode must be fully decoded to determine what class of operation is to be performed and thus how long the instruction is. This makes high-performance implementations difficult. Following the opcode byte in most instructions that reference an operand in memory is a second byte that tells all about the operand. The 2-bit mode field means that there are only four ways to address operands and one of the operands must always be a register.
Instructions are generally simple, specifying only a single action.
A typical arithmetic instruction specifies two registers to supply the source operands and a single destination register. A variant allows the instruction to supply a 13-bit signed constant instead of one of the registers. The data are written into the register specified. Bit 13 selects between them. In both cases, the destination is always a register.