Hola,
Que te cueste no es novedad, quedate tranquilo, el ASM templa los nervios, jajaja
Bueno, lo que dice Liebesschmerz-- es verdad, pero aparentemente estás estudiando sobre DOS. Te recomendaría no meterte de entrada en la construcción de un EXE. Empezá contruyendo un .COM, que te va a llevar por un camino sin tantos obstáculos.
Te explico un poco lo que es la segmentación y por qué es tanto quilombo. La historia es así:
Los primeros micros de INTEL tenían la capacidad de direccionar sólo 16 bits de memoria RAM. Me refiero a los modelos 8086, 8088, 80186 que casi siempre los conocimos bajo el nombre de PC XT. Esos 16 bits, te limitaban a manejar como máximo programas de 64 kb.
Como te imaginarás, con el tiempo esa memoria quedo muy escasa. Con la salida del modelo AT286, se buscó expandir la memoria a 1 MB. El problema surgió cuando los 16 bits de direccionamiento que usaban en los XT no les sirvieron. Como la gente de INTEL nunca fue muy previsora, tuvieron la "genial idea" de agregar 4 bits más a las direcciones de memoria, quedando 20 bits direccionables que llegaban a cubrir JUSTITO el mega de RAM. Lamentablemente, esto produjo un desbalance, puesto que los registros de datos del micro seguian siendo de 16 bits y entonces no podías direccionar toda la memoria con un registro. ¿Qué otra "genialidad" se le ocurrió? usar DOS REGISTROS de 16 bits SUPERPUESTOS!!!, de modo tal que uno de ellos estaba desplazado 4 bits a la derecha. Así surgió el término de SEGMENTO y DESPLAZAMIENTO. Gráficamente sería:
Registro 1: FEDCBA9876543210
Registro 2: XXXXFEDCBA9876543210