An based operand is specified by a “displacement” or “offset” and a register. The register is known as a base register in this type of addressing. The sum of the displacement and the base register value becomes an “effective address”, and the content at that address becomes the value of the operand.
For example, let us take a look at the following instruction:
The destination operand, 2(%eax) means that the destination of the movb instruction is two byte higher than the address stored in register eax.
This addressing mode becomes very useful when we need to access items that are at a fixed displacement from a base address. We will use this addressing mode very often when we get to parameters and local variables of subroutines.