gotoxy macro fila,col ;macro para posicinar el caracter
mov ah,02h ;posicionar el cursor en pantalla
mov dh,fila ;se manda la fila a la parte alta de dx
mov dl,col ;columna a la parte baja de dx
mov bh,0h ;posiciona en las coordenadas dadas
int 10h ;interrupcion
endm
pantalla macro car ;recibe el dato a mostrar, que es el parametro
mov ah,02h ;posiciona con las coordenadas anteriores
mov dl,car ;enviar el caracter y mostrar
int 21h ;interrupcion
endm
imprime macro msj ;macro para mostrar los mensajes
mov dx,offset msj ;ponemos el mensaje en dx y lo muestra
mov ah,9 ;funcion para imprimir mensaje
int 21h ;interrupcion
endm
.model small
.data ;segmento datos
mensaje DB "INGRESE UN CARACTER: $"
mensaje2 DB 13,10,"INGRESE X del 0 al 9: $"
mensaje3 DB 13,10,"INGRESE Y del 0 al 9: $"
caracter DB 40 ;variable para cadena
varx DB ? ;variables para coordenadas
vary DB ?
vtext db 100 dup('$') ;declaración del vector
.code ;segmento codigo
inicio:
mov ax,@data ;mueve segmento datos a ax
mov ds,ax ;se mueve ax a ds
imprime mensaje ;llamamos a imprime y le enviamos la variable
mov si,00h ;limpiamos registro si
leer:
mov ax,0000 ;se limpia ax
mov ah,01h ;funcion de ingreso de caracter, e imprimir
int 21h ;interrupcion
mov caracter[si],al ;ponemos el caracter tecleado en el arreglo caracter
inc si ;incrementamos si
cmp al,0dh ;comparamos al = salto de linea
ja leer ;si no es igual, se repite
jb leer ;si es igual, continua el programa
;acaba capturar caracter
;mostrar caracter capturado
mov dx,offset caracter ;imprime el caracter
mov ah,0ah ;lee cadenas de texto por teclado
int 21h ;interrupcion
imprime caracter ;llama al macro imprime el caracter
imprime mensaje2 ;capturar coordenada 1
mov ah,01h ;captura lo que se teclee
int 21h ;interrupcion
sub al,30h ;se le resta 30h para que se reconozca como numero
mov bl,al ;se mueve a bl
mov varx,al ;se mueve el valor a varx
;termina capturar coordenada 1
imprime mensaje3 ;se llama al macro imprime y se le manda la variable
mov ah,01h ;captura lo que se teclee
int 21h ;interrupcion
sub al,30h
mov bl,al
mov vary,al ;termina capturar coordenada 2
mov ax,0003h ;limpia pantalla
int 10h ;interrupcion
;se llama a los macros y se les envian los datos
gotoxy vary,varx
pantalla caracter[0]
mov ah,01h ;captura e impresion
int 21h ;interrupcion
mov ax,4c00h ;funcion de fin
int 21h ;interrupcion
CODIGO ENDS
end inicio