- Labornetzteil AliExpress         
Ergebnis 1 bis 3 von 3

Thema: Einbinden einer Bibliothek in ein Assembler Programm

  1. #1

    Einbinden einer Bibliothek in ein Assembler Programm

    Anzeige

    Praxistest und DIY Projekte
    Hi,

    ich möchte eine Bibliothek(AN617) in mein Assemblerprogramm einbinden
    bekomme aber immer nur Fehlermeldungen.
    Ich benutze einen PIC 16F628.
    Und wollte fragen ob einer vielleicht weiss wie ich sowas richtig mache und mir ein Programmbeispiel posten würde

    danke schonmal

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.10.2004
    Ort
    ferd. Waldmüllerg. 7/2
    Alter
    39
    Beiträge
    456
    Da ich deinen Scource-Code nicht kenne, kann ich nur raten, wie du das eingebunden hast.

    Aber ein Knackpunkt bei dem einbinden von Bibliotheken in den Assemblercode war, dass ich dann duzende von "Sekotr zwei mal beschrieben"-Fehlermeldungen bekommen habe. Dieser tritt auf, wenn du den Code ungefähr so einbindest (und der, wie der AN617 Assembler-Code enthält)

    Code:
    #include <FMX.A17>
    
    org 0x00
        goto main
    
    org 0x04
       ---do some interrupts---
    
    main:
       ---do something else---
    
    end
    Das Problem ist nun bei dem Preprocessor (der für das Abbarbeiten aller Befehle, die mit einem # beginnen verantwortlich ist), dass er den Inhalt von something.inc nimmt und in 1:1 in dein Source-Code einfügt. Erst dann läuft der Compiler über den Code und wandelt diese in HEX um. Da in dem aber schon Assembler Befehle enthalten sind, aber kein "org" Befehl, haut der Compiler diese Standardmäßig auf die Adresse 0x00. Nun, bis jetzt erkennt er noch kein Fehler, aber dann hast du ja aber den "org 0x00"-Befehl dort stehend, womit du dem Compiler sagst, dass du ab da alle Befehle auf die Adresse 0x00 haben willst (welche aber schon von dem Programmcode des Includes besetzt ist, der Compiler meckert natürlich ^_^ (noch immer besser, als wenn er es nicht tun würde und du dann Tage bei der Fehlersuche sitzt.

    Um den Fehler auszumerzen setzt du den Include am besten ganz unten hin, am besten vor End (wenn du eeprom-Daten hast, natürlich davor). Damit wird der Source-Code der Bibliothek erst am ende deines Programms eingefügt und du bekommst die oben genannten Fehler nicht mehr.

    Code:
    org 0x00
        goto main
    
    org 0x04
       ---do some interrupts---
    
    main:
       ---do something else---
    
    #include <FMX.A17>
    
    end
    Naja, wenn das nichts hilft, post mal die Fehlermeldungen ^_^ und, wenn es geht und du es möchtest dein Source-Code. Die Fehlersuche ist dann um einiges einfacher, da vor allem man nciht mehr Raten muss .
    MfG
    Mobius

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.12.2005
    Ort
    Euskirchen-Großbüllesheim
    Alter
    74
    Beiträge
    2.063
    Hallo,
    Mobius hat das Wesentliche schon geschrieben.
    Du kannst vor dem ORG, also am Anfang einer Assembler-Datei, (Register-) Definitionen oder Macros per INCLUDE einbinden. Programm-Code kommt hinter dem ORG für die Start-Adresse.
    Unter http://www.domnick-elektronik.de/picasm.htm gibt es Beispiele.
    MfG Karl-Heinz
    HobbyElektronik hier klicken ....

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen