Você está na página 1de 2

.

model small
.data
car DB 0 ;contendr� el caracter
posx DB 0 ;posicion x actual del cursor
posy DB 0 ;posicion y actual del cursor
xant DB 0 ;posicion x anterior del cursor
yant DB 0 ;posicion y anterior del cursor

.code
inicia:

MOV AH,1
INT 21H

MOV car,AL

MOV AH,3 ;selecciona la pagina activa


MOV BH,0
INT 10H

MOV posx,CH ;guarda las posiciones actuales


MOV posy,DH ;en las variables
DEC posx ;desplaza un lugar a la izquierda

repite:

MOV AH,2
MOV DL,0FFH
INT 21H

MOV AH,2
MOV DH,yant
MOV DL,xant
INT 10H

MOV AH,2
MOV DH,posy
MOV DL,posx
INT 10H

MOV DL,car
MOV AH,2
INT 21H

MOV AH,2
MOV DH,posy
MOV DL,posx
INT 10H

MOV xant,DL ;restitucion de posiciones


MOV yant,DH

MOV AH,0 ;funci�n 0


INT 16H ;de la int 16h
;obtiene un caracter del teclado
;ah contiene el codigo de rastreo de la tecla oprimida
;al contiene el caracter de dicha tecla

izq: CMP AH,75 ;compara ah con el codigo de rastreo de tecla flecha izq
JNZ arr ;no corresponde con el codigo? compara el siguiente cod.
DEC posx ;si corresponde, desplaza un lugar a la izquierda
JMP repite ;repite el proceso

arr: CMP AH,72 ;compara ah con el codigo de rastreo de tecla flecha arriba
JNZ der ;no corresponde con el codigo? compara el siguiente cod.
DEC posy ;si corresponde, desplaza un lugar hacia abajo
JMP repite ;repite el proceso

der: CMP AH,77 ;compara ah con el codigo de rastreo de tecla flecha derecha
JNZ aba ;no corresponde con el codigo? compara el siguiente cod.
INC posx ;si corresponde, desplaza un lugar hacia la derecha
JMP repite ;repite el proceso

aba: CMP AH,80 ;compara ah con el codigo de rastreo de tecla flecha abajo
JNZ ningun ;no corresponde con el codigo? compara el siguiente cod.
INC posy ;si corresponde, desplaza un lugar hacia arriba
JMP repite ;repite el proceso

ningun: CMP AH,1 ;compara ah con el codigo de rastreo de tecla esc


JZ fin ;si corresponde, fin del programa
JMP repite ;no corresponde, repite el proceso sin desplazarse

fin:
.exit

Você também pode gostar