Based Addressing Mode
8-bit or 16-bit instruction operand is added to the contents of a base register (BX or BP), the resulting value is a pointer to location where data resides.
Mov al, [bx],[si]
Mov bl , [bp],[di]
Mov cl , [bp],[di]
Code Example
If bx=1000h
si=0880h
Mov AL, [1000+880]
Mov AL,[1880]
Indexed Addressing Modes
The indexed addressing modes use the following syntax:
mov al, [bx+disp]
mov al, [bp+disp]
mov al, [si+disp]
mov al, [di+disp]
Code Example
MOV BX, 100H
MOV AL, [BX + 15]
MOV AL, [BX + 16]
If bx contains 1000h, then the instruction mov cl, [bx+20h] will load cl from memory location ds:1020h. Likewise, if bp contains 2020h, mov dh, [bp+1000h] will load dh from location ss:3020. The offsets generated by these addressing modes are the sum of the constant and the specified register. The addressing modes involving bx, si, and di all use the data segment, the [bp+disp] addressing mode uses the stack segment by default. As with the register indirect addressing modes, you can use the segment override prefixes to specify a different segment:
mov al, ss:[bx+disp]
mov al, es:[bp+disp]
mov al, cs:[si+disp]
mov al, ss:[di+disp]
Example: MOV AX, [DI + 100]