manipulacion de la pila!!

7
Manipulación de la Pila amón Iván Romo Reyes

Upload: romo91

Post on 25-Jul-2015

1.201 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Manipulacion de la pila!!

Manipulación de la Pila

Ramón Iván Romo Reyes

Page 2: Manipulacion de la pila!!

Instrucciones para 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).

Page 3: Manipulacion de la pila!!

Instrucciones Básicas de la Pila• 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

Page 4: Manipulacion de la pila!!

Ejemplo• 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.

Page 5: Manipulacion de la pila!!

Codigo• .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

Page 6: Manipulacion de la pila!!

Ejemplo 2• ;Autor Victor De la Rocha• ;URL http://www.mis-algoritmos.com

• .model small• .stack ;Nos sirve como un almacen (segmento de pila)• .data• var1 db 5• var2 db 3• .code• .startup

• mov ah, 02h• mov dl, var1• add dl, 30h• int 21h• mov dl, '+'• int 21h• mov dl, var2• add dl, 30h• int 21h• mov dl,'='• int 21h• mov ah,0h• mov al, var1• add al, var2• push AX ;Se guarda en la pila para no perder valores• mov dl,ah• mov ah, 02h• add dl, 30h• int 21h• pop AX ; Saca todos los valores de la pila• mov dl,al• add dl,30h• mov ah,02h• int 21h• .exit• end

Page 7: Manipulacion de la pila!!

Ejemplo 3•

; HOLA.ASM

• ; Programa clásico de ejemplo. Despliega una leyenda en pantalla.

• STACK SEGMENT STACK ; Segmento de pila

• DW 64 DUP (?) ; Define espacio en la pila

• STACK ENDS

• DATA SEGMENT ; Segmento de datos

• SALUDO DB "Hola mundo!!",13,10,"$" ; Cadena

• DATA ENDS

• CODE SEGMENT ; Segmento de Codigo

• ASSUME CS:CODE, DS:DATA, SS:STACK

• INICIO: ; Punto de entrada al programa

• MOV AX,DATA ; Pone direccion en AX

• MOV DS,AX ; Pone la direccion en los registros

• MOV DX,OFFSET SALUDO ; Obtiene direccion del mensaje

• MOV AH,09H ; Funcion: Visualizar cadena

• INT 21H ; Servicio: Funciones alto nivel DOS

• MOV AH,4CH ; Funcion: Terminar

• INT 21H

• CODE ENDS

• END INICIO ; Marca fin y define INICIO