Anda di halaman 1dari 5

LA PILA

La pila sirve para almacenamiento temporal de informacin


de datos y direcciones. La forma de almacenamiento y
recuperacin de la informacin de la pila utiliza la secuencia
LIFO (Last Input First Output), ltima en entrar primera en
salir.
Cuando se ejecuta una instruccin CALL, el 8088 ingresa los
valores que contienen CS e IP a la pila.
Como parte de la subrutina, es posible colocar en la pila el
contenido de otros registros ejecutando la instruccin PUSH.
Ejemplo:
PUSH SI
Luego de ejecutarse la instruccin, el contenido del registro
SI ser ingresado en la pila. Al finalizar la subrutina,
mediante la instruccin POP se pueden recuperar los datos
ingresados a la pila a sus correspondientes registros.
Ejemplo:
POP SI
Al ejecutarse la instruccin, el contenido del registro SI,
guardado en la pila, ser tomado del tope de la pila para
ingresarlo al registro SI.
Al finalizar la subrutina, la ejecucin de una instruccin de
retorno, RET, permitir que los valores de CS e IP salgan de
la pila y regresen a los registros internos de donde
originalmente se encontraban.
La pila es de 64KB y desde el punto de vista de software se
organiza como 32K palabras, cada palabra tiene 2 bytes. La
palabra de direccin ms baja de la pila est indicada
mediante el contenido del registro de segmento de pila SS.
Los contenidos de los registros SP y BP se utilizan como
offset al interior del segmento de pila.
La direccin obtenida del contenido de los registros de SS y
SP (SS:SP) es la direccin fsica en la que se ubic el ltimo
almacenamiento en la pila. Esta direccin se conoce como
tope de pila (TOS).
Al arrancar el microcomputador el valor del registro del
puntero de pila, SP, se lo inicializa con FFFEH. Combinando
este valor con el valor del registro SS, (SS:FFFEH),
obtenemos la ubicacin de la direccin ms alta de la
pila (BOS).
El 8088 ingresa en la pila los datos y direcciones de palabra
en palabra. Cada vez que el contenido de un registro se va
a ingresar al tope de la pila, el valor en el registro de
puntero de pila SP automticamente es disminuido en dos y
luego se escribe el contenido del registro en la pila. De esta
forma se ve que la direccin de la pila vara
decrecientemente desde su valor ms alto, esto es, desde
SS:FFFEH.

Ejercicio 1:

Dados los valores de los registros AX, SS y SP, encontrar las


direcciones de:
Inicio, fin y tope de pila. Considerar que los valores estn
expresados en
hexadecimal.
RAM
<-- 16
bits -->

115 Inicio de la pila


3E 12 23 (BOS)
14 23
Direccin de BOS . .
1540 +
. .
FFFE = 1153E
. .
AX 78 08 28 29
31 33
34 36
47 48
154 Tope de la pila
SP 00 08 8 49 57 (TOS)
154
Direccin de TOS 6 58 59
01540 + 154
0008 = 1548 4 AA AB
154 CD EF
2
154 Fin de la pila
SS 01 54 0 63 41 (EOS)

El ltimo valor que ingres a la pila es 5749.

Los valores que se encuentran entre TOS Y BOS son valores


vlidos de pila, mientras que los que estn entre TOS Y EOS
ya no son vlidos, aunque estn presentes en la pila. Si se
ingresa nueva informacin a la pila, sta reemplazar a la
no vlida.

Ejercicio 2:

Cules son los valores almacenados en BOS, TOS y EOS en el ejercicio


anterior?

BOS 231
---> 2
TOS 574
---> 9
EOS 416
---> 3
Ejercicio 3:

a) Mostrar el valor de la palabra ubicada en


TOS

57 49
1549H 1548H

b) Cul es la direccin fsica de pila en la que se almacenara el


contenido
del prximo registro?

TOS - 2

1548-2 = 1546
c) Ingresar a la pila el valor de AX e indicar el nuevo valor
de SP.

PUSH AX

1546 08 78

SP = TOS - 2

SP 00 06

Cuando se recupera el contenido de un registro desde el


tope de la pila, la secuencia de este proceso se revierte. Se
recupera el valor contenido en la pila y se lo ubica en el
registro respectivo y el SP automticamente se aumenta en
dos. El valor del tope de la pila ahora corresponde al que
tena antes de ingresar el contenido de un registro.

d) Recuperar de la pila el valor de AX e indicar el nuevo


valor de SP.

POP AX

AX 78 08

SP = TOS + 2

SP 00 08

ESPACIO DE DIRECCIONES PARA ENTRADA Y SALIDA


(INPUT/OUTPUT)

El 8088 cuenta con memoria de 64KB (desde 0000H a


FFFFH), separada para direcciones de entrada/salida (I/O).
En este espacio se implementan las interfaces de I/O, como
prticos de impresoras y de terminales. Las direcciones I/O
son de 16bits.

La parte del mapa, entre 0000H y 00FFH se la denomina


pgina 0. Algunas instrucciones de I/O del 8088 pueden
ejecutar operaciones para dispositivos de I/O ubicados
nicamente en esta parte del espacio de direcciones. Otras
instrucciones de I/O pueden poner o sacar datos desde los
dispositivos localizados en cualquier parte del espacio de
direcciones de I/O. Las ocho direcciones de memoria
ubicadas desde 00F8H a 00FFH son reservadas por el
fabricante Intel Corporation y no deben usarse.

Anda mungkin juga menyukai