Magno,
O endereçamento segmentado dessa forma, com endereço de instruções sendo formados por CS:EIP é a forma de endereçamento usada no 80386. No caso a questão aqui não é se tem outra forma de endereçar, porque esse processo é transparente ao programador, a idéia da questão é que você entenda direitinho como funciona o endereçamento segmentado, que é a chave de resolver toda a questão, vou tentar dar uma explicada básica de como funciona esse tipo de endereçamento, se você continuar com dúvidas é só falar:
No caso de endereçamento segmentado, a idéia é de que dividimos a memória em partes, no caso segmentos, e endereçamos esses segmentos da seguinte forma:
Vamos dizer que a memória vá da posição 0000H até 1000H, e dividimos ela em 2 partes, no caso vamos dizer que seja:
Segmento 1 -> 0000H até 0500H
Segmento 2 -> 0501H até 1000H
Então para endereçarmos uma posição dentro de um segmento, nós guardamos o endereço de base dele, no caso o primeiro endereço, e endereçamos as outras posições dentro do segmento com um valor que chamamos de deslocamento, então se quisermos acessar as posições de memória abaixo:
0001H -> Segmento=0000H, Deslocamento=0001H
0100H -> Segmento=0000H, Deslocamento=0100H
0501H -> Segmento=0501H, Deslocamento=0000H
0601H -> Segmento=0501H, Deslocamento=0100H
No caso do segmento de código, guardamos o endereço de segmento no registrador CS e o deslocamento é dado pelo EIP.
Espero que isso tenha ajudado, qualquer coisa é só falar.