Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Manipulación de la Pila
Página 1 de 3
Lenguaje de interfaz
Manipulación de la Pila
Memoria Baja
0000 0F00:
0002
0004
0006
0008 200 ss:sp3
000A 100 ss:sp2
000C ss:sp1
Fin del segmento Stack
mov ax,100
push ax ; sp2
mov bx, 200
push bx ; sp3
1. Substrae 2 de sp
2. El valor del registro especificado es copiado a [ss:sp].
El orden de estos pasos es importante. Un push primero substrae 2 (no 1) de sp. La primer
colocación push, deja a sp en sp2, donde el valor del registro ax es almacenado. Nótese
que esta acción deja al puntero del stack direccionado al valor palabra recientemente
colocado- pushed- en el stack.
Página 2 de 3
Lenguaje de interfaz
Manipulación de la Pila
Una forma de prevenir éstos problemas es escribir los programas en pequeños módulos, o
subrutinas. En cada modulo, realizar un push con todos los registros que se utilizarán.
Entonces, justo antes de que ésta sección de código termine, realizar un pop a los mismos
registros retirándolos pero en orden inverso.
push ax
push bx
push cx
pop cx
pop bx
pop ax
En éste ejemplo, los registros ax, bx y cx, son posiblemente utilizados; por lo tanto, éstos
registros son almacenados en el stack para preservar los valores de los registros. Por último,
los valores son retirados (pop) del stack en orden inverso, restaurando los valores originales
de los registros y manteniendo el stack en sincronía.
PUSH y POP realizan las operaciones de apilado y desapilado en la pila del procesador
respectivamente, admiten todos los tipos de direccionamiento (excepto inmediato). Los
operandos deben ser siempre de 16 bits.
PUSH reg
PUSH mem
PUSH seg-reg
POP reg
POP mem
POP seg-reg
Ejemplos:
PUSH AX ; envía a la pila AX
POP DS ; carga el primer elemento de la pila en DS
Página 3 de 3