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
sábado, 25 de abril de 2009
Codigos de Ensamblador - Captura e Impresión De Texto
Leer carácter con Echo.
La lectura de un carácter con Echo permite que, el carácter es leído es impreso el mismo tiempo.
MOV AH,01H
INT 21H
Nota: El valor del carácter (en hexadecimal) es guardado en el registro AL
Leer carácter Sin Echo.
La lectura de un carácter Sin Echo simplemente captura el carácter pero no lo imprime. Se puede hacer mandando dos valores al registro AH: 07H ó 08H
MOV AH,07H
INT 21H
Nota: El valor del carácter (en hexadecimal) es guardado en el registro AL
Desplegar un carácter.
MOV AH,02H
MOV DL,caracter
INT 21H
Donde:
MOV AH,09H
LEA DX,mensaje
INT 21H
Donde:
La lectura de un carácter con Echo permite que, el carácter es leído es impreso el mismo tiempo.
MOV AH,01H
INT 21H
Nota: El valor del carácter (en hexadecimal) es guardado en el registro AL
Leer carácter Sin Echo.
La lectura de un carácter Sin Echo simplemente captura el carácter pero no lo imprime. Se puede hacer mandando dos valores al registro AH: 07H ó 08H
MOV AH,07H
INT 21H
Nota: El valor del carácter (en hexadecimal) es guardado en el registro AL
Desplegar un carácter.
MOV AH,02H
MOV DL,caracter
INT 21H
Donde:
- caracter debe de contener el valor en hexadecimal del carácter que se desea imprimir ó bien el mismo carácter encerrado entre apostrofes (ejemplo: MOV DL,'A'... ó MOV DL,41H)
MOV AH,09H
LEA DX,mensaje
INT 21H
Donde:
- mensaje debe estar previamente declarado en el segmento de datos (mensaje DB 'HoLa MuNdO$'
- Recuerden que todos los mensajes terminan con un símbolo de pesos ($)
viernes, 24 de abril de 2009
Codigos de Ensamblador - Fecha, Hora y Funciones de Pantalla
Buenas noches a todos.
Como lo dije en la entrada anterior, aquí les dejo unos cuantos códigos para realizar ciertas funciones en Lenguaje Ensamblador. Aquí mostrare algunas funciones de pantalla y entrada de datos (teclado). Esperando que ayude a muchos (^_^)
Obtener la fecha.
MOV AH,2AH
INT 21H
NOTA: La información se guarda en los siguientes registros:
MOV AH,2CH
INT 21H
Nota: La información se guarda en los siguientes registros:
MOV AX,0600H ;Llamada a la función
MOV BH,07H ;color de fondo y color de letra
MOV CX,0000H ;coordenadas de inicio
MOV DX,184FH ;coordenadas de fin
INT 10H
Donde:
MOV AH,02H ;Llamada a la función
MOV BH,00H ;pagina 0
MOV DH,05H ;Fila
MOV DL,10H ;Columna
INT 10H
Donde:
Como lo dije en la entrada anterior, aquí les dejo unos cuantos códigos para realizar ciertas funciones en Lenguaje Ensamblador. Aquí mostrare algunas funciones de pantalla y entrada de datos (teclado). Esperando que ayude a muchos (^_^)
Obtener la fecha.
MOV AH,2AH
INT 21H
NOTA: La información se guarda en los siguientes registros:
- AL = Dia de la semana(Domingo=0)
- CX = Año
- DH = Mes
- DL = Día del mes
MOV AH,2CH
INT 21H
Nota: La información se guarda en los siguientes registros:
- Hora = CH
- Minutos = CL
- Segundos = DH
- Milisegundos = DL
MOV AX,0600H ;Llamada a la función
MOV BH,07H ;color de fondo y color de letra
MOV CX,0000H ;coordenadas de inicio
MOV DX,184FH ;coordenadas de fin
INT 10H
Donde:
- Las coordenadas de inicio y de fin son para Fila-Columna, suponiendo que la pantalla esta en un tamaño de 25 filas por 80 columnas.
- Las coordenadas de inicio y de fin se dan en valor hexadecimal, fila y columna
- La primera columna es la numero 0 (cero) al igual que la primera fila es 0 (cero).Color de fondo; donde 0 = Negro y 7 = Blanco
MOV AH,02H ;Llamada a la función
MOV BH,00H ;pagina 0
MOV DH,05H ;Fila
MOV DL,10H ;Columna
INT 10H
Donde:
- Es la pagina donde se va a colocar el cursor
- El valor de Fila se da en hexadecimal
- El valor de Columna se da en hexadecimal
Bienvenidos Uno y Todos!!!
Buenas noches a todos...
Esta es la primera entrada que realizo en un blog, hare todo lo posible por subir informacion lo mas seguido posible: codigos, trucos para windows, etc...
Como aviso y entretenimiento para todos, la proxima entrada sera sobre lenguaje emsamblador; codigos para limpiar pantalla, colocar el cursor.
Sin mas por el momento, me despido de uds.
Muchas gracias por la visita
(^_^)\../
ATTE
Mr. Purple
Suscribirse a:
Entradas (Atom)