# Como Usar Librerias en ensamblador para PIC: MPLIB



## Marcoz (Dic 17, 2008)

Hola, que tal. Me llamo Marco Zamora y estudio los primeros semestres de ingenieria. He escrito este tema porque tengo dudas sobre el funcionameinto de librerias en ensamblador. Se que hay un par de temas ya abiertos en los foros, pero aunque los he leido, no resuelven mis dudas del todo. Asi que por favor espero que alquien quiera ayudarme.

 Basicamente mi principal duda es: ¿Como puedo llamar a las rutinas de un archivo .lib (o libreria), generado con el MPLIB del paquete ensamblador de Microchip? 

 Se que hay varias maneras de incluir codigo externo en un archivo, sea con la directiva include para añadir un archivo .h o .inc, o bien utilizando las directivas extern y global, pero realmente no estoy seguro que de esa manera uno este utilizando el ejecutable MPLIB, que sirve para hacer librerias. Leyendo los manuales y guias de Microchip, me doy cuenta que una libreria se puede añadir si se modifica el archivo linkeador escribiendo la directiva FILE seguida del nombre der archivo .lib. Y pues eso es lo que hago, primero invoco al MPLIB para crear una libreria, y luego en un proyecto aparte, modifico el linkeador para poder usar esa libreria, todo se ensambla sin porblemas, pero al intentar utilizar una rutina de la libreria me aparece el error de "Symbol not previously defined (Rutinadelibreria)". Me agradaria que alguien quisiera ayudarme y me diga que es lo que me falta o que esta mal en lo que hago.

Gracias


----------



## Moyano Jonathan (Dic 17, 2008)

Lo que no podés hacer es que te enlaze la librería con el código fuente?


----------



## Marcoz (Dic 17, 2008)

Hola, Gracias por responderme tan pronto y perdon si no supe explicarme. 

 Pues si, esa seria mi principal duda: ¿Como puedo enlazar y utilizar un archivo .lib en mi codigo fuente? o si me permites preguntare algo mas general para resolver todas mis dudas: ¿Como puedo crear y usar librerias en el MPASM de Microchip?


----------



## Moyano Jonathan (Dic 17, 2008)

es muy facil. (no te habia entendido)

abris el mplab y creas un archivo de texto, luego escribis el código de la librería. Luego guardas el archivo con extención .inc  (ese es el formato para librerías que uso)

para que te enlaze la librería la guardas en la carpeta C:\Archivos de programa\Microchip\MPASM Suite
y por último cuando escribis el código fuente haces una llamada #include <librería.inc> al final del código fuente y listo ahi te la va a enlazar.


----------



## Marcoz (Dic 17, 2008)

¡Vaya, Gracias!

He probado lo que me dijiste y funciona muy bien. Pero tengo unas cuantas dudas aun. Espero no haya problema en preguntarlas todas

¿Porque se tiene que añadir al final la llamada inlcude?, si lo añado al inicio no puedo simular el codigo fuente con el MPLAB SIM.

En todo esto... ¿Donde entra MPLIB? que segun entiendo es el  ejecutable de Microchip que permite crear librerias.

¿Que es entonces y para que sirve un archivo con terminacion .lib?

Segun se, cuando se enlaza una libreria a un codigo fuente, solo se toma de la libreria las rutinas que el codigo fuente utilice, esto para hacer mas eficiente la asignacion de memoria del PIC,  pero... al añadir el archivo con terminacion .INC, me fijo en la memoria del programa y en el archivo .MAP y veo que se han añadido "todas" las rutinas de la libreria. ¿Asi funciona?

Perdon que pregunte tantas cosas, es solo que sigo aun algo confundido y gracias nuevamnete por responderme rapido.


----------



## Moyano Jonathan (Dic 17, 2008)

Che la verdad no se como trabaja MPLIB.

Las librerías las tenés que poner al final con el include porque así las toma como funciones.

y si cuando añadis una librería el ensamblador compila todas las funciones que están dentro de la misma


----------



## Marcoz (Dic 17, 2008)

Bueno pues. Gracias por la ayuda


----------



## Moyano Jonathan (Dic 17, 2008)

de nada para eso estamos


----------

