An instruction is made up of an Operation Code, or "opcode", and some number of operands.
Generally speaking, most modern processors are limited at the machine level to instructions with no more than two operands; however, these operands may take several different forms:
One consequence of having flexibility in the types of operands possible, is that different instruction formats may be required depending upon the specific types of operands employed for individual instructions. The layout of an instruction using an 8-bit immediate value will not resemble the layout of an instruction using multiple indexed/based address registers.
Having multiple instruction formats almost always results in different instructions requiring different amounts of memory to store them. An instruction with only one register ID code takes less space than one with 2 or 3 register ID codes plus a direct address. As part of the instruction cycle, the Control Unit, once the instruction has been retrieved from memory, must increment the Program Counter to point to the physically next instruction. How much the Control Unit must increment the Program Counter by depends upon the specific instruction just retrieved (or more correctly, upon the length of the specific instruction just retrieved) from memory. This means that the Control Unit will need to examine the op code field to determine the type of instruction and from that information determine the instruction length. This indirectly also means that two instructions which are superficially doing the same operation but which have different operand structures (such as "ADD AX,[BX]" and "ADD AX,[25+BX]") must have different op code patterns.
Complex Instruction Set Computers typically have a large number of different instruction formats, addressing modes, and instruction lengths. Reduced Instruction Set Computers typically have only one uniform instruction format, and many, if not all, instructions are the same length, making it faster to decode an instruction.