Este programa permite mover un punto dentro de un cuadro o aria especificada, el pinto se puede mover hacia arriba, abajo, derecha e izquierda. Ilustra el manejo de pantalla con macros.
;programa que mueve un punto "*" en toda la pantalla
;la tecla 1 = mueve a la izquierda, 2 = a la derecha
;3 = mueve arriba y el 4 = mueve abajo
.model tiny
.data
fila db 0
colu db 0
fini db 7
ffin db 18
cini db 12
cfin db 68
con db 0
con1 db 0
.code
clear macro
mov ah,00h ;limpia la pantalla
mov al,03h
int 10h
endm
gotoxy macro fil,col
mov ah,02h ;posiciona el cursor
mov dh,fil ;fila
mov dl,col ;columna
mov bh,0 ;pagina de video
int 10h
endm
leepos macro
mov ah,03h ;lee la posiscion del cursor
mov bh,0
int 10h
endm
leeatri macro
mov ah,08h ;lee el carac y atribu donde
mov bh,0h ;esta el cursor
int 10h
endm
escriatri macro
mov ah,09h ;escribe el carac y atribu
mov bh,0h ;donde esta el cursor
mov bl,70h ;color de atributo
mov cx,1
int 10h
endm
cuadro macro fi,ff,ci,cf
local etiqueta
local etiqueta2
mov cl,ci
etiqueta: ;ciclo para mostrar la fila superior
gotoxy fi,cl ;fila superior
mov ah,02h ;inter. imprimir
mov dl,205 ;movemos a dl
int 21h
gotoxy ff,cl ;fila inferior
mov ah,02h
mov dl,205
int 21h
inc cl
cmp cl,cf
jne etiqueta ;ciclo aumenta + 1
mov cl,fi
etiqueta2:
gotoxy cl,ci ;columna izquierda
mov ah,02h
mov dl,186
int 21h
gotoxy cl,cf ;columna derecha
mov ah,02h
mov dl,186
int 21h
inc cl
cmp cl,ff
jne etiqueta2 ;ciclo aumenta + 1
gotoxy fi,ci ;mostrar el codo superior izq
mov ah,02h
mov dl,201
int 21h
gotoxy fi,cf ;mostrar el codo superior der
mov ah,02h
mov dl,187
int 21h
gotoxy ff,ci ;mostrar el codo inferior izq
mov ah,02h
mov dl,200
int 21h
gotoxy ff,cf ;mostrar el codo inferior der
mov ah,02h
mov dl,188
int 21h
endm
.startup
clear ;limpia pantalla
;fi,ff,ci,cf
cuadro 5,20,10,70 ;dibuja cuadro
cuadro fini,ffin,cini,cfin ;dibuja cuadro
mov con,8 ;pinta el cuadro
pinta:
mov con1,13
pinta1:
gotoxy con,con1
mov al,' '
escriatri
inc con1
cmp con1,68
jne pinta1
inc con
cmp con,18
jne pinta
inc fini
inc cini
mov al,fini
mov fila,al
mov al,cini
mov colu,al
gotoxy fini,cini ;posiciona
mov ah,02h
mov dl,'*'
int 21h
gotoxy fini,cini
repite:
mov ah,08h
int 21h
cmp al,49
je izquierda
cmp al,50
je derecha
cmp al,51
je arriba
cmp al,52
je abajo
cmp al,13
jne repite
jmp salir
izquierda:
cmp colu,13 ;columna inicio + 1
je repite
leeatri ;lee el atributo
mov al,' '
escriatri ;escribe el atributo
dec colu ;decremento la columna
gotoxy fila,colu ;posiciono el cursor
mov al,'*'
escriatri ;escribe el atributo
jmp repite
derecha:
cmp colu,67 ;columna fin - 1
je repite
leeatri ;lee el atributo
mov al,' '
escriatri ;escribe el atributo
inc colu ;incrementa la columna
gotoxy fila,colu ;posiciono el cursor
mov al,'*'
escriatri ;escribe el atributo
jmp repite
arriba:
cmp fila,8 ;fila inicio + 1
je repite
leeatri ;lee el atributo
mov al,' '
escriatri ;escribe el atributo
dec fila ;decremento la fila
gotoxy fila,colu ;posiciono el cursor
mov al,'*'
escriatri ;escribe el atributo
jmp repite
abajo:
cmp fila,17 ;fila fin - 1
je repite
leeatri ;lee el atributo
mov al,' '
escriatri ;escribe el atributo
inc fila ;incrementa la fila
gotoxy fila,colu ;posiciono el cursor
mov al,'*'
escriatri ;escribe el atributo
jmp repite
salir:
.exit
end
Descargar