Estructuras en ensamblador(data, stack, code, model)

5
Estructuras en ensamblador: DATA, SNACK, CODE, MODEL son una parte fundamental de la programación en lenguaje ensamblador para la familia de procesadores La arquitectura de los procesadores x86 obliga al uso de segmentos de memoria para manejar la información, el tamaño de estos segmentos es de 64kb. Un segmento es un área especial en un programa que inicia en un limite de un párrafo, esto es, en una localidad de regularmente divisible entre 16, o 10H. Aunque un segmento puede estar ubicado casi en cualquier lugar de la memoria y, en modo real, puede ser hasta de 64K, solo necesita tanto espacio como el programa requiera para su ejecución. Los tres segmentos principales son los segmentos de código, de datos y de la pila. Code Segment (Segmento de Código) Contiene las instrucciones de máquina que son ejecutadas por lo común la primera instrucción ejecutable está en el inicio del segmento, y el sistema operativo enlaza a esa localidad para iniciar la ejecución del programa. el registro del CS direcciona el segmento de código Data segment (S egmento de Datos) Contiene datos, constantes y áreas de trabajo definidos por el programa. El registro DS direcciona el segmento de datos. Stack Segment (Segmento de pila) En términos sencillos, la pila contiene los datos y direcciones que usted necesita guardar temporalmente o para uso de sus "llamadas" subrutinas. El registro de segmento de la pila (SS) direcciona el segmento de la pila.

Transcript of Estructuras en ensamblador(data, stack, code, model)

Page 1: Estructuras en ensamblador(data, stack, code, model)

Estructuras en ensamblador: DATA, SNACK, CODE, MODEL

son una parte fundamental de la programación en lenguaje ensamblador parala familia de procesadores

La arquitectura de los procesadores x86 obliga al uso de segmentos de memoria para manejar la información, el tamaño de estos segmentos es de 64kb.

Un segmento es un área especial en un programa que inicia en un limite de un párrafo, esto es, en una localidad de regularmente divisible entre 16, o 10H.

Aunque un segmento puede estar ubicado casi en cualquier lugar de la memoria y, en modo real, puede ser hasta de 64K, solo necesita tanto espacio como el programa requiera para su ejecución.

Los tres segmentos principales son los segmentos de código, de datos y de la pila.

Code Segment (Segmento de Código)

Contiene las instrucciones de máquina que son ejecutadas por lo común la primera instrucción ejecutable está en el inicio del segmento, y el sistema operativo enlaza a esa localidad para iniciar la ejecución del programa. el registro del CS direcciona el segmento de código

Data segment (S egmento de Datos)

Contiene datos, constantes y áreas de trabajo definidos por el programa. El registro DS direcciona el segmento de datos.

Stack Segment (Segmento de pila)

En términos sencillos, la pila contiene los datos y direcciones que usted necesita guardar temporalmente o para uso de sus "llamadas" subrutinas. El registro de segmento de la pila (SS) direcciona el segmento de la pila.

Page 2: Estructuras en ensamblador(data, stack, code, model)

Para que el ensamblador pueda manejar los datos es necesario que cada dato o instrucción se encuentren localizados en el área que corresponde a sus respectivos segmentos.

El ensamblador accesa a esta información tomando en cuenta la localización del segmento, dada por los registros específicos.

Registro CS

Como su nombre indica, el registro del CS direcciona el segmento de código. El DOS almacena la dirección inicial del segmento de código de un programa en el registro CS. Esta dirección de segmento, más un valor de desplazamiento en el registro apuntador de instrucción (IP), indica la dirección de una instrucción que es buscada para su ejecución.

Registro DS

La dirección inicial de un segmento de datos de programa es almacenada en el registro DS. En términos sencillos, esta dirección, más un valor de desplazamiento en una instrucción, genera una referencia a la localidad de un byte especifico en el segmento de datos.

Registro SS

El registro SS permite la colocación en memoria de una pila, para almacenamiento temporal de direcciones y datos. El DOS almacena la dirección de inicio del segmento de pila de un programa en el registro SS. Esta dirección de segmento, más un valor de desplazamiento en el registro del apuntador de pila (SP), indica la palabra actual en la pila que está siendo direccionada.

Los segmentos pueden ser definidos usando los conjuntos de directivas de control de segmentos.Las principales directivas de segmento simplificadas son .STACK, .CODE, .DATA, .MODEL

La forma de indicarle al ensamblador con cuales de los segmentos se va a trabajar es por medio de las directivas .CODE, .DATA y .STACK.

Las principales directivas de segmento simplificadas son .STACK, .CODE, .DATA,.MODEL y DOSSEG.

Page 3: Estructuras en ensamblador(data, stack, code, model)

· Las directivas .STACK, .CODE y .DATA.STACK, .CODE y .DATA definen los segmentos de pila, código y datos, respectivamente.

La directiva .STACK define el tamaño de la pila. Por ejemplo.STACK 200hdefine una pila de 200h (512) bytes de longitud.

La directiva .CODE marca el inicio del segmento de código del programa. Esta directiva ledice a Turbo Assembler exactamente en qué segmento de código debe ejecutar lasinstrucciones. La definición del segmento de código es aun más simple de definir que elsegmento de pila, utilizando las directivas de segmento simplificadas, puesto que norequiere de operandos. Por ejemplo,....CODEsub ax,ax ; Inicializa el acumulador a ceromov cx,100 ; # de ciclos a ejecutar

.DATA, por su parte, marca el inicio del segmento de datos. En este segmento deberáncolocarse las variables de memoria. Por ejemplo:....DATAErrorMessage DB 0Dh,0Ah,'*** Error ***',0Dh,0Ah,'$'Counter DW ?...

.MODEL especifica el modelo de memoria para un módulo de lenguaje ensamblador queusa las directivas de segmento simplicadas.

1. TINY: Los datos y el código juntos ocupan menos de 64 KB por lo que entran en el mismo segmento. Se utiliza para programas .COM. Algunos ensambladores no soportan este modelo.

2. SMALL: Los datos caben en un segmento de 64 KB y el código cabe en otro segmento de 64 KB. Por lo tanto todo el código y los datos se pueden acceder como NEAR.

3. MEDIUM: Los datos entran en un sólo segmento de 64 KB, pero el código puede ser mayor de 64 KB. Por lo tanto, código es FAR, mientras que los datos se acceden como NEAR.

4. COMPACT: Todo el código entra en un segmento de 64 KB, pero los datos no (pero no pueden haber matrices de más de 64 KB). Por lo tanto, código es NEAR, mientras que los datos se acceden como FAR.

5. LARGE: Tanto el código como los datos pueden ocupar más de 64 KB (pero no pueden haber matrices de más de 64 KB), por lo que ambos se acceden como FAR.

6. HUGE: Tanto el código como los datos pueden ocupar más de 64 KB (y las matrices también), por lo que ambos se acceden como FAR y los punteros a los elementos de las matrices también son FAR.

Page 4: Estructuras en ensamblador(data, stack, code, model)