The IA-32 processor platform allows three different methods to access the system memory:
(1) flat memory mode
(2) segmented memory mode
(3) real address mode
In flat memory mode, all system memory is represented as a continuous address space. All commands, data, and stacks are included in the same address space. Access each memory location through a specific address called a linear address.
In the segmented memory mode, the system memory is divided into independent segments and referenced by the pointer in the segment register. Each segment is used to contain specific types of data. One segment is used to contain the instruction code, the other segment is used to contain data elements, and the third segment is used to contain the program stack.
The memory location in the segment is defined by the logical address. The logical address consists of the segment address (stored in the segment register) and the offset address. The processor converts the Logical Address to the corresponding linear address location to access the memory bytes.
If the program uses the real address mode, all segment registers point to a zero linear address and will not be changed by the program. All script codes, data elements, and stack elements are directly accessed through their linear addresses.
Excerpt from: Assembly Language Programming by Richard Blum