Directiva segment en lenguaje ensamblador

Un programa ensamblado en formato .EXE consiste en uno o mas segmentos. Un segmento de pila define el almacén de la pila, un segmento de datos define los elementos de datos y un segmento de código proporciona un código ejecutable. Las directivas para definir un segmento, SEGMENT  y ENDS  tienen el formato siguiente:


El enunciado SEGMENT define el inicio de un segmento. El nombre del segmento debe estar presente, ser único y cumplir las convenciones para nombres del lenguaje. EL enunciado ENDS indica el final del segmento y contiene el mismo nombre del enunciado SEGMENT. El tamaño máximo de un segmento es de 64K. El operando de un enunciado SEGMENT puede tener tres tipos de opciones: alineación, combinar y clase, codificadas en este formato:

nombre      SEGMENT         alineación       combinar        ‘ clase ‘ TIPO ALINEACION. La entrada alineación indica el limite en el que inicia el segmento. Para el requerimiento típico, PARA, alinea el segmento con el limite de un párrafo, de manera que la dirección inicial es divisible entre 16, o 10H. En ausencia de un operando hace que el ensamblador por omisión tome PARA.

TIPO COMBINAR. La entrada combinar indica si se combina el segmento con otros segmentos cuando son enlazados después de ensamblar. Los tipos de combinar son STACK, COMMON, PUBLIC y la expresión AT. Por ejemplo, el segmento de la pila por lo común es definido como:

nombre    SEGMENT      PARA       STACK
Puede utilizar PUBLIC y COMMON en donde tenga el propósito de combinar de forma separada programas ensamblados cuando los enlaza. En otros casos, donde un programa no es combinado con otros, puede omitir la opción o codificar NONE.

TIPO CLASE. La entrada clase, encerrada entre apóstrofos, es utilizada para agrupar segmentos cuando se enlazan. Se utiliza la clase ‘code’ para el segmento de códigos, ‘data’ por segmento de datos y ‘stack’ para el segmento de la pila. El ejemplo siguiente define un segmento de pila con tipos alineación, combinar y clase:

nombre      SEGMENT       PARA      STACK          ‘Stack’.