Definicion simplificada de segmento

11
María Guadalupe Olvera Nolasco Verónica Patricia Pasillas Gutiérrez Luz Angélica Sánchez Castruita Definición Simplificada de Segmento

Transcript of Definicion simplificada de segmento

Page 1: Definicion simplificada de segmento

María Guadalupe Olvera NolascoVerónica Patricia Pasillas GutiérrezLuz Angélica Sánchez Castruita

Definición Simplificada de Segmento

Page 2: Definicion simplificada de segmento

Definición Simplificada de Segmento

La versión 5.0 de MASM implementa un sistema simplificado para declarar segmentos.

Por default, las directivas simplificadas de segmento usan los nombres de los segmentos y convenciones usadas por Microsoft en sus

lenguajes de alto nivel.

Page 3: Definicion simplificada de segmento

Modelos de Memoria.Especifican el tamaño usado tanto en datos como en código en el programa. Los lenguajes de alto nivel requieren la definición de un modelo de memoria específico, si vamos a enlazarlo con una rutina en ensamblador, ésta deberá tener la definición del mismo modelo de memoria. Esta deberá utilizarse antes que cualquier otra directiva de segmento y si se usa la directiva DOSSEG, ésta deberá ir antes de la directiva del modelo de memoria.DOSSEG nos acomoda los segmentos en el orden prestablecido.

Page 4: Definicion simplificada de segmento

Para declarar el tipo de memoria a utilizar en un programa, la sintaxis es la siguiente :.MODEL nombre_memoria_modelo

• Donde: nombre_memoria_modelo -> Corresponde al tipo de memoria y puede ser una de las siguientes:

Tiny, Small, Medium, Compact, Large, Huge

Page 5: Definicion simplificada de segmento

Los apuntadores FAR contienen tanto la dirección del segmento como la del offset, éstos se pueden inicializar mediante la directiva DD.

Los apuntadores NEAR solo contienen el offset de la dirección, éstos puedeninicializarse con la directiva DW.

Page 6: Definicion simplificada de segmento

Modelo Descripción

Tiny Tanto datos como código son acomodados en un mismo segmento.

Small Los datos se escriben en un segmento y el código en otro segmento. Cada segmentopuede tener hasta 64 KB. En este caso se usan punteros NEAR para código y datos.En este caso se usan punteros NEAR para código y datos.

Medium Todos los datos se escriben en un segmento 64 KB máximo. El código puede ocupar más de un segmento, entonces los datos se manejan como NEAR paro el código como FAR.

Compact Todo el código se acomoda en un solo segmento, pero los datos pueden ocupar más de un segmento, sin embargo los arreglos no pueden ocupar más de 64K. De esta manera código es NEAR pero los datos son FAR.

Large Tanto el código como los datos pueden ocupar más de un segmento, sin embargo losarreglos se siguen limitando a 64 KB. De esta manera, tanto los datos como el código son FAR.

Huge Tanto el código como los datos pueden ocupar más de un segmento, en este caso también los arreglos pueden ser mas grandes que 64 KB. Todos los punteros utilizados en este modelo son FAR.

Page 7: Definicion simplificada de segmento

Directivas de definición de segmentos Sintaxis

.STACK [tamaño] Define el tamaño que tendrá la pila.

.CODE Segmento de código.

.DATA Segmento para datos inicializados NEAR.

.DATA? Segmento para datos no inicializados NEAR.

.FARDATA Segmento para datos inicializados FAR.

.FARDATA? Segmento para datos no inicializados FAR.

.CONST Segmento para datos constantes.

Page 8: Definicion simplificada de segmento

Orden de los segmentos.Los segmentos deberán ser ordenados de acuerdo a la convención para segmentos

del DOS, esta convención se utiliza por Microsoft para los lenguajes de alto nivel.

• Cuando se usa esta directiva los segmentos son ordenados como sigue:• Segmentos teniendo el nombre de clase 'CODE'.• Cualquier segmento que no tenga el nombre de clase 'CODE' y no se encuentre en el DGROUP.• Segmentos que son parte de DGROUP en el siguiente orden:

– Segmentos con nombre de clase BEGDATA. (Este nombre se reserva para uso de Microsoft). –Cualquier segmento cuyo nombre de clase no sea: BEGDATA, CONST, DATA, BSS ó STACK.– Segmento de clase CONST.– Segmentos de clase DATA.– Segmentos de clase BSS.– Segmento de clase STACK.

Page 9: Definicion simplificada de segmento

STACK

BSS

DATA

CONST

BEGDATA

Otros segmentos

CODE

DGROUP

Orden de los segmentos

Page 10: Definicion simplificada de segmento

Valores de segmento. •Para cada una de las directivas de segmento existe su correspondiente valor, el cual se expresa por su mismo nombre, excepto que este valor inicia con el signo (@) y la directiva empieza con un punto (.).

Nombres de segmentos predefinidos.• En esta sección analizaremos solo los correspondientes al modelo Small. Segmentos y tipos para el Modelo de Memoria SMALL.

Modelo Directiva Nombre Alineación Combinación Clase Grupo

Small .CODE.DATA.CONST.DATA?.STACK

_TEXT_DATACONST_BSSSTACK

WORDWORDWORDWORDPARA

PUBLICPUBLICPUBLICPUBLICSTACK

‘CODE’‘DATA’‘CONST’‘BSS’‘STACK’

DGROUPDGROUPDGROUPDGROUP

Page 11: Definicion simplificada de segmento

.MODEL SMALL

.STACK 64

.DATA WORDA DW 250 WORDB DW 150 WORDC DW ? .CODE INICIO: MOV AX, @DATA MOV DS, AX MOV AX, WORDA ADD AX, WORDB MOV WORDC, AX MOV AX, 4C00H INT 21H END INICIO

EJEMPLO