Punto en la pantalla

Aplicación que utiliza el modo gráfico. Dibuja un punto en el centro de la pantalla y permite moverlo mediante las teclas 8, 4, 6 y 2. Y obviamente organizado mediante macros.

Búsqueda de ejemplos en Ensamblador
;Autor Victor De la Rocha
;URL http://www.mis-algoritmos.com

;cambiar el fondo a color azul
;poner un pixel color blanco
;usando la tecla
;usando la tecla 8,2,4,6 moveremos el pixel
GRAPH MACRO          ;iniciamos modo gráfico
                MOV AH,00H
                MOV AL,12H
                INT 10H
        ENDM

PALETA MACRO color      ;Permite definir la paleta
                MOV AH,0BH
                MOV BH,00H
                MOV BL,color
                INT 10H
        ENDM

PUNTO MACRO x,y,color
                MOV AH,0CH
                MOV AL,color    ;Color blanco
                MOV BH,0       
                MOV CX,x
                MOV DX,y
                INT 10H
        ENDM

.model small
.stack
.data
        xx dw 1
        yy dw 1
        x dw 320
        y dw 240
.code
.startup

        GRAPH      ;Seteamos modo gráfico 640*480
        PALETA 1        ;Color azul
       
        PUSH AX
        PUSH BX

        mover:
                PUNTO xx,yy,0
                PUNTO x,y,7

        MOV AH,07H      ;READKEY
        INT 21H  ;
       
        CMP AL,56; Caracter '8'
                JE UP
        CMP AL,52; Caracter '4'
                JE LEFT
        CMP AL,54; Caracter '6'
                JE RIGHT
        CMP AL,50; Caracter '2'
                JE DOWN
        CMP AL,27; Salir
                JE SALIR
                JNE mover
       
        ;UP:
        DOWN:
                MOV AX,y
                MOV yy,AX       ;Guardamos posicion anterior
                        mov bx,x;X lo movemos a XX
                        MOV xx,bx
                INC AX
                MOV y,AX
                JMP mover

        LEFT:
                MOV AX,x
                MOV xx,AX       ;Guardamos posicion anterior
                        mov bx,y;X lo movemos a XX
                        MOV yy,bx
                DEC AX
                MOV x, AX
                JMP mover       

        RIGHT:
                MOV AX,x
                MOV xx,AX       ;Guardamos posicion anterior
                        mov bx,y;X lo movemos a XX
                        MOV yy,bx
                INC AX
                MOV X, AX
                JMP mover       

        ;DOWN:
        UP:
                MOV AX,y
                MOV yy,AX       ;Guardamos posicion anterior
                        mov bx,x;X lo movemos a XX
                        MOV xx,bx
                DEC AX
                MOV y, AX
                JMP mover       

        JMP mover

        MOV AH,07H      ;READKEY
        INT 21H  ;

        SALIR:

        MOV AH,00H
        MOV AL,03H
        INT 10H
.exit
end