Directivas simplificadas de segmentos

Los ensambladores de MicroSoft y de Borland proporcionan algunas formas abreviadas para definir segmentos. Para usar estas abreviaturas, inicialice el modelo de memoria antes de definir algún segmento. El formato general (incluyendo el punto inicial) es:

.MODEL  modelo de memoria

El modelo de memoria puede ser TINY, SMALL, MEDIUM, COMPACT o LARGE. Los requisitos para cada modelo son:


Puede utilizar cualquiera de estos modelos para un programa autónomo (esto es, un programa que no este enlazado con algún otro). El modelo TINY esta destinado para uso exclusivo de programas .COM, los cuales tienen sus datos, código y pila en un segmento. El modelo SMALL exige que el código quepa en un segmento de 64K y los datos en otro segmento de 64K. La directiva .MODELL genera automáticamente el enunciado ASSUME necesario.

Los formatos generales (incluyendo el punto inicial) para las directivas que define los segmentos de la pila, de datos y de código son:

.STACK [tamaño]
.DATA
.CODE [nombre]

Cada una de estas directivas hace que el ensamblador genere el enunciado SEGMENT necesario y su correspondiente ENDS. Los nombres por omisión de los segmentos (que usted no tiene que definir) son STACK, DATA y TEXT (para el segmento de código).

La figura proporciona un ejemplo haciendo uso de las directivas simplificadas de segmento.

page 60,132
TITLE     P04ASM2 (EXE)     Operaciones de mover y sumar
;————————————————————————-
.MODEL     SMALL
.STACK     64 ;Se define la pila
.DATA         ;Se definen los datos

FLDA     DW             250
FLDB     DW             125
FLDC     DW             ?
;————————————————————————-

.CODE                             ;Se define el segmento de código
BEGIN   PROC         FAR
MOV           AX, @data     ;Se asigna la dirección de DATASG (Prog. anterior)

MOV           AX, FLDA       ;Mover 0250 a AX
ADD            AX, FLDB       ;Sumar 0125 a AX
MOV           FLDC, AX       ;Almacenar suma en FLDC

MOV           AX, 4C00H     ;Salida a DOS
INT             21H
BEGIN   ENDP                               ;Fin de procedimiento
END           BEGIN           ;Fin de programa