PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ObjectLinker-Fehler bei Projekt aus 2 .asm-Files



Schrotti75
03.10.2004, 09:12
Hallo,

habe folgendes Problem:

Mein Projekt besteht aus einem Hauptprogramm und einem weiteren Programm, in dem z.B. Zeitschleifen programmiert sind, welche vom Hauptprogramm benutzt werden. Dabei werden allerdings keine Werte übergebn, sondern es wird lediglich an bestimmte Stellen im jeweiligen Code des Unterprogramms gesprungen.

Beim Erstellen des .hex-Files funktioniert die Assemblierung auch problemlos, lediglich wird ein Linker-Fehler gemeldet.
Vielleicht hat jemand eine gute Idee, was ich hier tun muß, um die beiden .asm-Files zusammenzubekommen? Die Hilfe von Microchip hat mich bislang jedenfalls noch nicht auf eine zündende Idee gebracht.

Bin für jeden guten Tip dankbar,

Gruß

Schrotti75

CKroll
17.10.2004, 18:07
Mal so ne dumme Frage. Müssen deine "Unterprogramme" unbedingt in einer anderen *.asm sein?

Wenn es unbedingt sein muss, dann würde ich die einzufügende Datei per "#include<>" Anweisung einbinden, aber am Besten erst ganz am Schluß deines Codes hinschreiben.
Und wenn du das schon gemacht hast, und trotzdem der Linker-Fehler kommt, dann würde ich mal probieren die Unterprogramm *.asm in *.h umzubenennen.

T.J.
20.04.2007, 22:20
Das verwenden mehrerer asm dateien für ein großes Projekt ist allein für die Übersichtlichkeit und Struktur nicht wegzudenken! Ich habe auch mehrere, allein die Funktionen für mein Display stehen in einer extra datei.

ansonsten: einfach #include "*.asm" an die Stelle wo die Funktionen stehen sollen, funktioniert 1A
aber bei sourcefiles nur die main eintragen, sonst meckert er!

PICture
21.04.2007, 07:52
Hallo Schrotti75!

Du kannst am einfachsten das zweite Programm am Ende des ersten einbinden:

include "*.asm"
end

Damit es keine Konflikte beim Assemblierung mit MPASM gibt, darf in dem zweiten Programm keine "org" Direktiven geben, die mit dem ersten kolidieren. Wenn es überhaupt keine gibt, dann wird das zweite Programm im Programmspeicher einfach ab Ende des erstens sein.

MfG

theborg
21.04.2007, 09:32
ich hab das immer so:

include "PortREG.inc"

wichtig ist auch das die letzte zeile der *.inc ne lehrzeile ist

T.J.
21.04.2007, 09:56
Hallo Schrotti75!

Du kannst am einfachsten das zweite Programm am Ende des ersten einbinden:

include "*.asm"
end

Damit es keine Konflikte beim Assemblierung mit MPASM gibt, darf in dem zweiten Programm keine "org" Direktiven geben, die mit dem ersten kolidieren. Wenn es überhaupt keine gibt, dann wird das zweite Programm im Programmspeicher einfach ab Ende des erstens sein.

MfG

warum schreibst du genau das gleiche wie ich? ich wollte nur mal eine Lösung hier reinschreiben. schrotti75 hat das Problem sicher schon gelöst, schau mal aufs datum!

PICture
21.04.2007, 12:27
Hallo T.J.!

Sorry, aber es ist, meine Meinung nach, nicht das gleiche!

In Deinem Beitrag steht "Verfasst am: Gestern um 22:20"!

MfG