gotoxy macro fila,col
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 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
Posicionar en pantalla
gotoxy macro fila,col
mov ah,02h
mov dh,fila
mov dl,col
mov bh,0h
int 10h
endm
--------------------------------------------------------------------------------------------------------------------------
Programa que pide ubicacion del caracter
gotoxy macro fila,col
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 del macro
pantalla macro que
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
;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
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
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('$')
ENDS
.code
startup:
mov ax,@data ;asignacion de data a ax
mov ds,ax ;asignacion de datos al del segmento de datos ds
imprime mensaje ;llama macro imprime con el parametro 'mensaje'
mov si,00h ;limpia el apuntador SI
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 si
cmp al,0dh
ja coordenadas ; si esto se cumple brinca a coordenadas
jb leer ;sino se cumple vuelve reinicia el ciclo leer
coordenadas: ;Se declara el metodo coordenadas
mov dx,offset caracter ;coloca se coloca el caracter ingresado en dx
mov ah,0ah
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 reinicia de nuevo el lo mismo
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
int 21h ;interrupcion DOS
mov ax,4c00h ;complemento interrupcion 21h fin de programa
int 21h ;interrupcion DOS
end startup ;fin de funcion principal
No hay comentarios:
Publicar un comentario