To access memory we can use these four registers: BX, SI, DI, BP.
Combining these registers inside [ ] symbols, we can get different
memory locations. These combinations are supported (addressing
modes. Displacement can be a immediate value or offset of a variable, or
even both. It's up to compiler to calculate a single immediate
value.
Displacement can be inside or outside of [ ] symbols, compiler
generates the same machine code for both ways.
Displacement is a signed value, so it can be both positive or
negative.