Punto en la pantalla (Versión optimizada)
Aplicación que utiliza gráficos.
Define un punto en el centro de la pantalla.
Permite desplazarlo mediante las teclas, 8,2,4 y 6.
;Autor Victor De la Rocha
;URL http://www.mis-algoritmos.com
READKEY MACRO ;Equivalente de ReadKey en otros lenguajes
MOV AH,07H ;STDIN, direct input, no echo (Func 07/int 21h)
INT 21h ;Interrupt 21h DOS Funcions
ENDM
GRAPH MACRO ;Inicia modo gráfico
MOV AH,00H ;Set video mode (Func 00/int 10h)
MOV AL,12H ;12h = 80x30 8x16 640x480 16/256k A000 VGA, ATI, VIP
INT 10H ;Interrupt 10h Video functions
ENDM
FONDO MACRO COLOR ;Define la paleta de colores
MOV AH,0BH ;Set colro palette (Func 0B/Int 10h)
MOV BH,0H ;
MOV BL,COLOR;color 0-15
INT 10H ;Interrupt 10h Video functions
ENDM
DOS MACRO ;Inicia/Regresa a modo MSDOS
MOV AH,00H ;Set video mode (Func 00/int 10h)
MOV AL,03H ;03h = 80x25 8x8 16 4 B800 CGA
INT 10H ;Interrupt 10h Video functions
ENDM
PUNTO MACRO X,Y,COLOR ;Dibuja un punto en la pantalla (En modo gráfico)
MOV AH,0CH ;Write dos on screen (Func 0C/Int 10h)
MOV AL,COLOR ;color 0-15
MOV BH,0 ;pagina (0 por default en esta aplicación)
MOV CX,X ;Columna
MOV DX,Y ;Fila
INT 10H ;Interrupt 10h Video functions
ENDM
.MODEL SMALL
.STACK
.DATA
X DW 320 ;Centro de la pantalla en X (Horizontalmente)
Y DW 240 ;Centro de la pantalla en Y (Verticalmente)
.CODE
.STARTUP
GRAPH ;Iniciamos modo gráfico
OTRO:
PUNTO X,Y,2 ;Dibujamos punto (La primera iteración es el centro de la pantalla)
READKEY ;Esperamos se *apachurre* una tecla :P jeje
CMP AL,56 ;Tecla 8 sube
JE UP ;Etiqueta que incrementa Y = Y + 1
CMP AL,50 ;Tecla 2 baja
JE DOWN ;Etiqueta que decrementa Y = Y - 1
CMP AL,54 ;Tecla 6 derecha
JE RIGHT ;Etiqueta que incrementa X = X + 1
CMP AL,52 ;Tecla 4 izquierda
JE LEFT ;Etiqueta que decrementa X = X - 1
CMP AL,27 ;ESC termina el programa
JE SALIR ;Etiqueta que va a donde se regresa a modo MSDOS, y termina el programa
JnE OTRO ;Otra iteración o ciclo (Leemos otra tecla para mover punto)
UP: ;Subimos punto
PUNTO X,Y,0 ;Punto de color del fondo para ocultar posición anterior
DEC Y ;Decrementamos Y
JMP OTRO ;Etiqueta donde dibuja otro punto (con los nuevos valores)
DOWN: ;Bajamos punto
PUNTO X,Y,0 ;Punto de color del fondo para ocultar posición anterior
INC Y ;Incrementamos Y
JMP OTRO ;Etiqueta donde dibuja otro punto (con los nuevos valores)
RIGHT: ;Desplazamos a la derecha el punto
PUNTO X,Y,0 ;Punto de color del fondo para ocultar posición anterior
INC X ;Incrementamos X
JMP OTRO ;Etiqueta donde dibuja otro punto (con los nuevos valores)
LEFT: ;Punto de color del fondo para ocultar posición anterior
PUNTO X,Y,0 ;Desplazamos a la izquierda el punto
DEC X ;Decrementamos X
JMP OTRO ;Etiqueta donde dibuja otro punto (con los nuevos valores)
SALIR: ;Etiqueta que representa el final de la aplicación.
DOS ;Regresamos al modo ambiente MSDOS
;Termina ejecución de aplicación y devuelve el control al sistema operativo
.EXIT
END