2.10 Manipulacion de La Pila RESUMEN

October 18, 2017 | Author: Tanni Diaz | Category: Computer Architecture, Computer Programming, Technology, Areas Of Computer Science, Computing
Share Embed Donate


Short Description

Descripción: investigación sobre manipulación de la pila subtema 2.10...

Description

INSTITUTO TECNOLÓGICO DE ACAPULCO

Ingeniería en sistemas computacionales Materia: Lenguaje de Interfaz RESUMEN: Tema: 2.10 MANIPULACION DE LA PILA. Profesor: Ing. Dagoberto Urzúa Osorio Alumna: Tania Díaz Navarrete #c: 12320712 Hora: 11:00 am– 14:00 p.m. Aula: 604

RESUMEN: 2.10 MANIPULACION DE LA PILA. DE acuerdo con (PETER, 1996) LA PILA (STACK) Los segmentos .COM y .EXE, requieren un área en el programa reservada como una pila (stack). El propósito de la pila es mantener un espacio para el almacenamiento tmeporal de direcciones y datos. El DOS define de manera automática la pila para un programa .COM, mientras que para un programa .EXE se debe definir en forma explícita. Cada elemento de dato en la pila. Cada elemento de dato en la pila es una palabra (dos bytes) El registro SS, como es inicializado por el DOS, contiene la dirección del inicio de la pila. Inicialmente, el SP contiene el tamaño de la pila, un valor que apunta al byte que esta pasando el final de la pila. La pila difiere de otros segmentos en su método de almacenar los datos empieza en la localidad más alta y almacena los datos hacia abajo por la memoria.

La instrucción PUSH (entre otras) disminuye el SP en 2 hacia abajo, hacia la siguiente palabra almacenada de la pila y coloca (o empuja, push) un valor ahí. La instrucción POP (entre otras) regresa el valor de la pila e incrementa el SO en 2 hacia arriba, hacia la siguiente palabra almacenada. El ejemplo siguiente se muestra como meter el contenido de los registros AX y BX a la pila y la subsecuente extracción de ellos. Suponga que el AX contiene 015AH, el BX contiene 03D2H y el SP contiene 28H. 1. Al comienzo la pila esta vacía y se ve así:

2. PUSH AX: Disminuye el SP en 2 (a 26H) y almacena el contenido del AX, 015AH, en la pila. Observe que la operación invierte la secuencia de bytes almacenados, de modo que 015ª se convierte en 5ª01:

3. PUSH BX: Disminuye el SP en 2 ( a 24H) y almacena el contenido del BX, 03D2H, en la pila:

4. POP BX: Regresa la palabra que se encuentra en la pila, en donde apunta el SP, y la envía al registro BX e incrementa el SP en 2 (a 26H). El BX ahora contiene 03D2H, con los bytes correctamente invertidos:

5. POP AX: Regresa la palabra que se encuentra en la pila, en donde apunta el SP, y la envía al registro AX e incrementa el SP en 2 (a 28H). el AX ahora contiene 015AH, con los bytes correctamente invertidos:

Las instrucciones POP son codificadas en secuencia inversa a las instrucciones PUSH. Así en el ejemplo se guardaron AX y BX, en ese orden. Además, los valores sacados de la pila aún están allí, aunque el SP ya no apunta a ellos. Siempre debe asegurarse que su programa coordine los valores que guardan en la pila con los valores que saca de ella. Como este es un registro directo, un error puede causar que un programa no funcione. También, para un programa .EXE usted tiene que definir una pila que sea suficientemente grande para contener todos los valores que pondrían ser guardados en ella.

Bibliografía: “Lenguaje ensamblador” Abel Peter Capítulo 13: Procesamiento de datos binarios. Página: 22-24

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF