Posicionar un caracter en las coordenadas dadas por el usuario
gotoxy macro fila,col ;declaracion de macro gotoxy parametros:fila,col
mov ah,02h ;complemento interrupcion 10h modo video colocacion cursor
mov dh,fila ;coordenada x para colocacion de cursor dh
mov dl,col ;coordenada y para colocacion de cursor dl
mov bh,0h
int 10h ;interrupcion de video
endm ;fin de macro
pantalla macro que ;declaracion de macro pantalla parametro que
mov ah,02h ;complemento interrupcion 21h
mov dl,que ;que es el caracter capturado
int 21h ;interrupcion DOS
endm ;fin de macro
imprime macro eztryng ;declaracion de macro con parametro eztryng
mov dx,offset eztryng ;coloca mensajes en dx
mov ah,9 ;complemento para la interrupcion 21h para impresion de txto
int 21h ;interrupcion DOS
endm ;fin de macro
.data ;variables
mensaje DB "INGRESE UN CARACTER: ",13,10,"$"
mensaje2 DB "INGRESE X del 0 al 9: ",13,10,"$"
mensaje3 DB "INGRESE Y del 0 al 9: ",13,10,"$"
caracter DB 40
varx DB ?
vary DB ?
vtext db 100 dup('$')
.code
startup:
mov ax,@data ;asignacion de datos ax
mov ds,ax ;asignacion de datos al segmento de datos
imprime mensaje ;llama macro imprime con el parametro 'mensaje'
mov si,00h ;limpia el apuntador SI
leer: ;declaracion de metodo leer
mov ax,0000 ;limpia ax
mov ah,01h ;complemento para interrupcion 21h captura
int 21h ;interrupcion DOS
mov caracter[si],al ;guarda el dato capturado en variable caracter
inc si ;incrementa apuntador si
cmp al,0dh ;compara si la ultima tecla presionada fue Intro
ja coordenadas ;si cumple brinca a coordenadas
jb leer ;sino cumple vuelve a ejecutar leer
coordenadas: ;declaracion de metodo coordenadas
mov dx,offset caracter ;coloca en dx el caracter ingresado
mov ah,0ah ;complemento de interrupcion 21h lee cadena de texto por teclado
int 21h ;interrupcion DOS
imprime caracter ;llama macro imprime con parametro caracter
imprime mensaje2 ;llama macro imprime con parametro mensaje2
mov ah,01h ;complemento de interrupcion 21h Eco de un caracter
int 21h ;interrupcion DOS
sub al,30h ;resta 30h para convertir al valor numerico
mov bl,al ;mueve al a bl
mov varx,al ;guarda al en varx (coordenada x)
imprime mensaje3 ;//////////////se repite/////////
mov ah,01h
int 21h
sub al,30h
mov bl,al
mov vary,al ;////////////////////////
mov ax,0003h ;complemento interrupcion 10h modo texto
int 10h ;interupccion de video
gotoxy vary,varx ;llama macro gotxy con los parametros vary y varx como columna y fila
pantalla caracter[0] ;llama macro pantalla con el caracter capturado como parametro
mov ah,01h ;complemento de interrupcion 21h Eco de un caracter
int 21h ;interrupcion DOS
mov ax,4c00h ;complemento interrupcion 21h fin de probrama
int 21h ;interrupcion DOS
end startup ;fin de funcion principal
mov ah,02h ;complemento interrupcion 10h modo video colocacion cursor
mov dh,fila ;coordenada x para colocacion de cursor dh
mov dl,col ;coordenada y para colocacion de cursor dl
mov bh,0h
int 10h ;interrupcion de video
endm ;fin de macro
pantalla macro que ;declaracion de macro pantalla parametro que
mov ah,02h ;complemento interrupcion 21h
mov dl,que ;que es el caracter capturado
int 21h ;interrupcion DOS
endm ;fin de macro
imprime macro eztryng ;declaracion de macro con parametro eztryng
mov dx,offset eztryng ;coloca mensajes en dx
mov ah,9 ;complemento para la interrupcion 21h para impresion de txto
int 21h ;interrupcion DOS
endm ;fin de macro
.data ;variables
mensaje DB "INGRESE UN CARACTER: ",13,10,"$"
mensaje2 DB "INGRESE X del 0 al 9: ",13,10,"$"
mensaje3 DB "INGRESE Y del 0 al 9: ",13,10,"$"
caracter DB 40
varx DB ?
vary DB ?
vtext db 100 dup('$')
.code
startup:
mov ax,@data ;asignacion de datos ax
mov ds,ax ;asignacion de datos al segmento de datos
imprime mensaje ;llama macro imprime con el parametro 'mensaje'
mov si,00h ;limpia el apuntador SI
leer: ;declaracion de metodo leer
mov ax,0000 ;limpia ax
mov ah,01h ;complemento para interrupcion 21h captura
int 21h ;interrupcion DOS
mov caracter[si],al ;guarda el dato capturado en variable caracter
inc si ;incrementa apuntador si
cmp al,0dh ;compara si la ultima tecla presionada fue Intro
ja coordenadas ;si cumple brinca a coordenadas
jb leer ;sino cumple vuelve a ejecutar leer
coordenadas: ;declaracion de metodo coordenadas
mov dx,offset caracter ;coloca en dx el caracter ingresado
mov ah,0ah ;complemento de interrupcion 21h lee cadena de texto por teclado
int 21h ;interrupcion DOS
imprime caracter ;llama macro imprime con parametro caracter
imprime mensaje2 ;llama macro imprime con parametro mensaje2
mov ah,01h ;complemento de interrupcion 21h Eco de un caracter
int 21h ;interrupcion DOS
sub al,30h ;resta 30h para convertir al valor numerico
mov bl,al ;mueve al a bl
mov varx,al ;guarda al en varx (coordenada x)
imprime mensaje3 ;//////////////se repite/////////
mov ah,01h
int 21h
sub al,30h
mov bl,al
mov vary,al ;////////////////////////
mov ax,0003h ;complemento interrupcion 10h modo texto
int 10h ;interupccion de video
gotoxy vary,varx ;llama macro gotxy con los parametros vary y varx como columna y fila
pantalla caracter[0] ;llama macro pantalla con el caracter capturado como parametro
mov ah,01h ;complemento de interrupcion 21h Eco de un caracter
int 21h ;interrupcion DOS
mov ax,4c00h ;complemento interrupcion 21h fin de probrama
int 21h ;interrupcion DOS
end startup ;fin de funcion principal
Comentarios
Publicar un comentario