domingo, 2 de abril de 2017

2.10.- Manipulación de la pila

La pila es un grupo de localidades de memoria que se reservan con la finalidad de proporcionar un espacio para el almacenamiento temporal de información.

La pila de los programas es del tipo LIFO (Last In First Out, Ultimo en entrar, Primero en salir).
Para controlar la pila el microprocesador cuenta con dos instrucciones básicas:
Push (Meter) y Pop (sacar).

El formato de estas instrucciones es el siguiente:
  • Push operando
  • Pop operando 
Cuando se ejecuta la instrucción Push, el contenido del operando se almacena en la ultima posición de la pila. Por ejemplo, si AX se carga previamente con el valor 5, una instrucción Push AX almacenaría el valor 5 en la ultima posición de la pila.

Por otro lado la instrucción Pop saca el último dato almacenado en la pila y lo coloca en el operando.
Siguiendo el ejemplo anterior, la instrucción Pop BX obtendría el número 5 y lo almacenaría en el registro BX. El siguiente ejemplo muestra como implementar la instrucción XCHG por medio de las instrucciones Push y Pop. Recuerde que la instrucción XCHG intercambia el contenido de sus dos operandos. 

.COMMENT
Programa: PushPop.ASM
Descripción: Este programa demuestra el uso de las instrucciones para el manejo de la pila, implementando la instrucción XCHG con Push y Pop
MODEL tiny
.CODE
Inicio: ;Punto de entrada al programa
Mov AX,5 ;AX=5
Mov BX,10 ;BX=10
Push AX ;Pila=5
Mov AX,BX ;AX=10
Pop BX ;BX=5
Mov AX,4C00h ;Terminar programa y salir al DOS
Int 21h ;
END Inicio
END
-ROT (a b c – c a b) Rota hacia atrás. 
-2ROT (ab cd ef – ef ab cd) Rota hacia atrás. 
NIP ( a b – b) Quita a de la pila. 
OUTK (... n -- ..) Elimina el elemento n. 
TUCK (a b -- b a b) Inserta una copia de b. 
2?DUP (ab – ab ab) Duplica si ab <> 0. 
2DROP (ab -- ) Elimina 2 de encima. 
2DUP ( ab – ab ab) Duplica los elementos. 
2NIP (ab cd – cd) Elimina elementos. 
2OUTK (::: n -- ::) Elimina el elemento n 
2OVER (ab cd – ab cd ab) Inserta una copia de ab. 
2PICK (:: n -- :::) Copia el elemento n 
encima de la pila. 
2ROLL (::: n -- :::) Quita el elemento n y 
lo deja arriba de la pila. 
2ROT (ab cd ef – cd ef ab) Rota los elementos 
2TUCK (ab cd – cd ab cd) Inserta una copia de cd. 
2SWAP (ab cd – cd ab) Rota los elementos.

Referencias Bibliograficas:
http://documents.mx/documents/unidad-2-lenguaje-de-interfaz.html
http://itpn.mx/recursosisc/6semestre/lenguajesdeinterfaz/Unidad%20II.pdf
https://es.slideshare.net/KILLERMSTR/prez-camacho-jess-asmeth
http://lenguajes-interfaz-2013.blogspot.mx/2014/03/unidad-ii-programacion-basica.html
http://lenguajesdeinterfazitsncg.blogspot.mx/2015/05/ensamblador-y-ligador-utilizar.html


1 comentario: