; Programa que posiciona un caracter en cierta parte de la pantalla
gotoxy macro fila,colmov ah,02h ; Se encarga de posicionar el cursor en pantalla
mov dh,fila ; Valor de la fila en la parte alta
mov dl,col ; Valor de la columna parte baja
mov bh,0h
int 10h ; Interrupcion para ejecutar los cambios en modo video
endm ; Finalizacion del macro
; Todo el bloque anterior de codigo funciona para posicionar el cursor en una fila y una columna
; La interrupcion int 10h es utilizada para despliegue en video, acepta el numero de funciones en el AH para el modo de pantalla
pantalla macro letra
mov ah,02h ; Posicionamos el caracter
mov dl,letra
int 21h ; Utilizamos esta interrupcion para mostrar el caracter que esta almacenado en el registro AH
endm
;La interrupcion 21h tiene varias funciones, para accesar a cada una de ellas es necesario que en el registro AH se encuentre el numero de funcion que se requiera
;Cuando tenemos el parametro 02H en nuestro registro AH la interrupcion 21h exhibe la salida
;Cuando tenemos el parametro 09H en nuestro registro AH la interrupcion 21h imprime la cadena (video)
;Cuando tenemos el parametro 40H en nuestro registro AH la interrupcion 21h despliega la escritura en dispositivo/archivo
.model small
.data
.code
startup:
mov ax,@data
mov ds,ax
mov ax,0003h
int 10h
gotoxy 10,10 ; Aqui se le asigna a nuestra macro el valor de la fila y columna donde se posicionara el cursor
pantalla 41h
mov ah,01h
int 21h ; Cierre del programa
mov ax,4c00h ; Cierre del programa
int 21h ; Cierre del programa
end startup
; Programa que coloca un caracter en la posicion dada de acuerdo a parámetros ingresados por teclado
gotoxy macro fila,col ; Delaracion de nuestro primer macro GOTOXY
mov ah,02h ; Se encarga de posicionar el cursor en pantalla
mov dh,fila ; Valor de la fila en la parte alta
mov dl,col ; Valor de la columna parte baja
mov bh,0h
int 10h ; Interrupcion para ejecutar los cambios en modo video
endm ; Finalizacion de la macro
; La interrupcion int 10h es utilizada para despliegue en video, acepta el numero de funciones en el AH para el modo de pantalla
pantalla macro que ; Declaracion de nuestro segundo macro PANTALLA
mov ah,02h ; Posicionamos el caracter
mov dl,que
int 21h ; Utilizamos esta interrupcion para mostrar el caracter que esta almacenado en el registro AH
endm ; Finalizacion de la macro
;La interrupcion 21h tiene varias funciones, para accesar a cada una de ellas es necesario que en el registro AH se encuentre el numero de funcion que se requiera
;Cuando tenemos el parametro 02H en nuestro registro AH la interrupcion 21h exhibe la salida
;Cuando tenemos el parametro 09H en nuestro registro AH la interrupcion 21h imprime la cadena (video)
;Cuando tenemos el parametro 40H en nuestro registro AH la interrupcion 21h despliega la escritura en dispositivo/archivo
imprime macro eztryng ; Declaracion de nuestro tercer macro IMPRIME
mov dx,offset eztryng ; Se ingresan los valores en nuestro registro DX
mov ah,9 ; Imprime la cadena
int 21h ; Utilizamos esta interrupcion para mostrar el caracter que esta almacenado en el registro AH
endm ; Finalizacion del macro
.data ; Variables
mensaje DB "Ingrese un caracter: $" ; Primer mensaje que nos pedira el caracter que se mostrara en pantalla
mensaje2 DB "Ingrese X del 0 al 9: $" ; Segundo mensaje que nos pedira ingresar un valor del 0 al 9 para la posicion en el eje X donde se desplegara nuestro caracter
mensaje3 DB ,13,10,"Ingrese Y del 0 al 9: $" ; Tercer mensaje que nos pedira ingresar un valor del 0 al 9 para la posicion en el eje Y donde se desplegara nuestro caracter
caracter DB 40
varx DB ?
vary DB ?
vtext db 100 dup('$')
.code
startup:
mov ax,@data ; Asignacion de datos en el registro AX
mov ds,ax ; Asignacion de datos al registro de segmento de datos
imprime mensaje ; Aqui se llama a la macro con el nombre IMPRIME con el parametro MENSAJE
mov si,00h ; Limpia el apuntador del registro indice fuente
leer: ; Comienzo de la declaracion del metodo leer
mov ax,0000 ; Aqui se realiza limpieza al registro AX
mov ah,01h ; Complemento para la interrupcion 21h que se utiliza para leer un caracter del teclado y desplegarlo
int 21h ; Interrupcion del DOS
mov caracter[si],al ; Guarda el dato capturado en la parte baja del registro AX en el registro indice fuente
inc si ; Incrementa el registro indice fuente
cmp al,0dh ; Hace una comparacion para saber si la tecla introducida fue ENTER
ja XY ; En caso de que se haya presionado ENTER, saldra el siguiente mensaje que pedira las coordenadas en X
jb leer ; En caso de que no se haya presionado ENTER se volvera a ejecutar el metodo LEER
XY: ; Declaracion del metodo XY
mov dx,offset caracter ; Coloca en el registro el caracter ingresado previamente
mov ah,0ah ; Complemento de la interrupcion 21h para leer caracteres del teclado y almacenarlos en un buffer
int 21h ; Interrupcion DOS
imprime caracter ; Llama a nuestra macro con el nombre IMPRIME con el parametro CARACTER
imprime mensaje2 ; Llama a nuestro macro con el nombre IMPRIME con el parametro MENSAJE2
mov ah,01h ; Complemento para la interrupcion 21h que se utiliza para leer un caracter del teclado y desplegarlo
int 21h ; Interrupcion DOS
sub al,30h ; Se le resta 30h a la parte baja de nuestro registro AX para convertirlo a valor numerico
mov bl,al ; Se le asigna a la parte baja de nuestro registo BX el valor de la parte baja del registro AX
mov varx,al ; Se le asigna a nuestra variable de la coordenada X el valor almacenado en la parte baja del registro AX
imprime mensaje3 ; Llama a nuestro macro con el nombre IMPRIME con el parametro MENSAJE3
mov ah,01h ; Complemento para la interrupcion 21h que se utiliza para leer un caracter del teclado y desplegarlo
int 21h ; Interrupcion DOS
sub al,30h ; Se le resta 30h a la parte baja de nuestro registo AX para convertirlo a valor numerico
mov bl,al ; Se le asigna a la parte baja de nuestro registo BX el valor de la parte baja del registro AX
mov vary,al ; Se le asigna a nuestra variable de la coordenada Y el valor almacenado en la parte baja del registro AX
mov ax,0003h ; Complemento de la interrupcion 10h
int 10h ; Interrupcion para ejecutar los cambios en modo video
gotoxy vary,varx ; Llama a la macro GOTOXY con los parametros VARX y VARY como fila y columna
pantalla caracter[0] ; Llama a la macro PANTALLA con el caracter capturado previamente como parametro
mov ah,01h ; Complemento de la interrupcion 21h que se utiliza para leer un caracter del teclado y desplegarlo
int 21h ; Interrupcion del DOS
mov ax,4c00h ; Complemento de la interrupcion 21h para finalizar el programa
int 21h ; Interrupcion del DOS
end startup ; Fin del programa
No hay comentarios.:
Publicar un comentario