El día de hoy veremos como crear nuestra propia librería y utilizarla en nuestros programas:
Primero escribimos nuestro código:
Ahora, en el código anterior he subrayado con verde una linea importante, como se puede apreciar, para importar una libreria personal, debemos colocar la sentencia:
De esta manera obtenemos el mismo resultado pero hemos dividido nuestro código en módulos, de esta manera podemos tener nuestros códigos separados y podemos modificar cómodamente sin afectar nuestros otros archivos.
Primero escribimos nuestro código:
CR EQU 13 ;Declaro retorno de carro
LF EQU 10 ;Declaro salto de linea
BIOS EQU 10H ;Declaro interrupcion 10h
DOS EQU 21H ;Declaro interrupcion 21h
TEXTO EQU 3 ;Declaro el servicio 03 para la impresion de texto desde BIOS
FIN EQU 4C00H ;Declaro interrupcion de exit
VARIABLES SEGMENT ;Declaro las variables
include "emu8086.inc"
TITULO DB "JUENITO_XD" ;Un texto
COLORES DB 01001110B ;Una agrupacion de colores
DB 11101111B ;0= cursos parpadeante 000=color de fondo 0000=color del texto
DB 10110001B
DB 01011100B
DB 00110001B
DB 01011111B
DB 01101011B
DB 01011100B
DB 01101111B
DB 01001110B
DB 00110001B
VARIABLES ENDS
VPILA SEGMENT;STACK ;Declaro la pila
DB 64 DUP("PILA")
VPILA ENDS
CODIGO SEGMENT
COLO PROC FAR ;Declaro un procedimiento
ASSUME CS:CODIGO, DS:VARIABLES, SS:VPILA
MOV AX,VARIABLES
MOV DS,AX
MOV AX,TEXTO ;Invoco el servicio de impresion de texto
INT BIOS ;Ejecuto el servicio con 10h
MOV CX,11 ;Declaro el iterador en 11
XOR SI,SI ;Borro SI
BUCLE: ;Llamo al bucle
PUSH CX
MOV DX,SI ;Indico la posicion de la letra a imprimir con SI
ADD DX,35 ;Indico la coordenada en x, la coordenada inicial es x=35
MOV DH,12 ;Indico la coordenada en y
CALL COLOCA ;Llamo al sistema para que coloque el cursor donde yo quiero
MOV AL,[SI+OFFSET TITULO] ;Le indico la letra a imprimir pasandole SI y el texto como parametros
MOV BL,[SI+OFFSET COLORES] ;Le indico los colores a imprimir pasandole SI y el conjunto de colores como parametros
CALL COLOR ;Llamo a la impresion del texto
POP CX
INC SI ;Incremento a SI para modificar la letra a imprimir y la coordenada en x
LOOPNZ BUCLE
MOV AH,8 ;08:Lee un caracter sin imprimir nada en pantalla
INT DOS ;Ejecuto el servicio
XOR DX,DX ;Limpio DX
CALL COLOCA ;Coloco el cursor en las coordenadas x=0 y=0
PUT_CURSOR 10,10
print "Hola mundo"
PUT_CURSOR 20,20
print "Estas son las coordenadas( x=20, y=20)"
TERMINA ;MACRO TERMINA
COLO ENDP
include "C:\Users\Isaías\Desktop\Librerias.inc"
CODIGO ENDS
END COLO
Ahora, en el código anterior he subrayado con verde una linea importante, como se puede apreciar, para importar una libreria personal, debemos colocar la sentencia:
include "ruta completa del archivo"
Una nota importante que he de mencionar es:
- Cuando se importa una librería preinstalada estas generalmente se definen en la sección de datos de tu programa.
- Una librería personal, como es mi caso, se debe importar al final del archivo, previo al fin de tu programa o procedimiento principal.
COLOR PROC MOV AH,9 ;Invoco al servicio 09 para imprimir texto con formato XOR BH,BH ;Limpio bh para indicarle que imprima en la misma pagina INT BIOS ;Hago la impresion pidiendo la interrupcion 10h RET ;retorno al programa principal COLOR ENDP COLOCA PROC MOV AH,2 ;Invoco al servicio 02 de 10h para posicionar el cursor XOR BX,BX ;Limpio bx para decirle que debe ser en la misma pagina INT BIOS ;Coloco el cursor con 10h en funcion del servicio 02 RET ;retorno al programa principal COLOCA ENDP PUT_CURSOR MACRO X,Y MOV AH,02H ;Para posicionar el cursor MOV BH,00H ;Coloco en la pagina 0 MOV DH,X ;Establesco las coordenadas, x=dh=renglon MOV DL,Y ; Establesco las coordenadas y=dl=columna INT 10H ;ejecuto la interrupción endm TERMINA MACRO MOV AX,4C00H ;Termino el programa INT 21H ;llamando a la interrupcion 21h ENDM
De esta manera obtenemos el mismo resultado pero hemos dividido nuestro código en módulos, de esta manera podemos tener nuestros códigos separados y podemos modificar cómodamente sin afectar nuestros otros archivos.
Comentarios
Publicar un comentario