Instrucciones Push (Empilar) y Pop (Desempilar)
La instruccion Push se utiliza para empilar un registro, ya que no se puede empilar un valor de forma directa. Por ejemplo
PUS AX
Nota: Recuerde utilizar registros completos, por ejemplo: AX, BX, CX, DX
Lo mismo sucede a la hora de desmpilar con la instruccion Pop, la cual desempila un registro previamente empilado.
POP AX
Ejemplo con Codigo ASCII.
El siguiente codigo es un ejemplo de manejo de caracteres, el cual imprime todo el codigo ASCII en columnas de 2o caracteres. Espero que el codigo sea lo bastante claro =D
El codigo fue compilado con MASM32.
Title Codigo ASCII
STACKS SEGMENT PARA STACK 'STACK'
;DB 64 DUP (0)
STACKS ENDS
DATA SEGMENT
COLUMNA DB 0 ;SE INICIALIZA LA VARIABLE COLUMNA
FILA DB 0 ;SE INICIALIZA LA VARIABLE FILA
DATA ENDS
CODESG SEGMENT
ASSUME CS:CODESG,DS:DATA,SS:STACKS
MAIN PROC FAR
PUSH DS
MOV AX, DATA
MOV DS, AX
LIMPIAR_PANTALLA:
MOV AX, 0600H ;LIMPIAR PANTALLA
MOV BH, 07H
MOV CX,0000H
MOV DX,184FH
INT 10H
MOV CX,0226
MOV AH,' '
CICLO:
MOV AH,02H ;COLOCA EL CURSOR
MOV BH,0H
MOV DH,FILA
MOV DL,COLUMNA
INT 10H
INC FILA ;SE INCREMENTA LA FILA PARA AUMENTA LA FILA
CMP FILA,20 ;SE COMPARA EL NUM DE FILAS CON 20
JNE MOSTRAR ;SE IMPRIMEN LOS PRIMEROS 20 CARACTERES
MOV FILA, 0 ;SE VUELVE A INICIALIZAR LA FILA EN CERO
ADD COLUMNA,10 ;SE INCREMENTA LA COLUMNA
MOSTRAR:
MOV AH,0EH ;IMPRIMIR 1 SOLO CARACTER
INT 10H
INC AL ;INCREMENTA EN AL PARA EL SIGUIENTE CARACTER
LOOP CICLO
CURSOR:
MOV AH,02
MOV DL,40
MOV BH,40
INT 10H
FIN:
MOV AX, 4CH
INT 21H
MAIN ENDP
CODESG ENDS
END MAIN
END
No hay comentarios:
Publicar un comentario