Сегментная адресация на x86 - тяжёлое наследие 16-битных процессоров. Поскольку значения регистров не позволяли косвенно адресовать через них более 64Kb памяти, то были дополнительно введены четыре сегментных регистра - CS (Code segment), DS (Data segment), ES (Extended Segment) и SS (Stack segment). Первый использовался в связке CS:IP (Instruction Pointer) как точка текущего выполнения программы, два следующих со стандартными DS:SI (Source Index) и ES:DI (Destination Index) для команд многобайтного просмотра/копирования, SS:SP (Stack Pointer) - указатель текущего положения стека. При этом особых запретов на использование сегментных регистров в других комбинациях не было, вполне можно было использовать CS:AX или DS:DX. Реальный адрес памяти рассчитывался как сегмент*0x10+смещение, таким образом адресовался 1Mb памяти.