lunes, 6 de mayo de 2013

Meter datos a una pila e imprimirlos en orden inverso.

Hola de nuevo un gusto saludar a todos los lectores, en este programa metemos 5 datos a un pila en un registro, y después imprimimos los datos que metimos en orden inverso, la importancia de este programa es ver el funcionamiento de push y pop.

push --> Mete datos a la pila
pop --> Saca datos de la pila

Recordar que una pila es una estructura de datos que funciona como una torre de discos, los primeros discos que se meten a la torre son los últimos que podemos sacar, dicho de otra forma los primeros valores que se meten a la pila, son los últimos que podemos sacar.

Programa en debug.

a
mov cx,05  ;número de datos a meter en este caso 5
mov ah,01
int 21
push ax  ;Metemos en la pila del registro ax, puede ser bx u otro registro
loop 103  ;Hacemos el ciclo para meter datos, se decrementa a cx en 1
mov cx,05 ;le damos el valor de 5 a cx para imprimir los datos, será otro ciclo
pop ax   ;Saca el ultimo valor metido a la pila
mov ah,02
mov dl,al  ;Se imprime el dato que se saco de la pila
int 21
loop 10d  ;repite el ciclo
int 20
g



Mismo programa en MASM

.model small
.stack 64
.data
.code
mov cx,05h
meter:
  mov ah,01h
  int 21h
  push ax
loop meter
mov cx,05h
imprimir:
  pop ax
  mov ah,02h
  mov dl,al
  int 21h
loop imprimir
salir:
  mov ah,04ch
  int 21h
end



Hasta el momento los programas entre debug y MASM solo los hemos diferenciado por las etiquetas, en los próximos programas veremos mas diferencias como declaraciones de variables en MASM, hasta la próxima.

1 comentario: