Guten Tag zusammen,
ich versuche gerade, den Assembler-Code eines nicht mehr verfügbaren Kollegen zu verstehen.
Dieser ist geschrieben für einen PIC 12C672.
Eine der letzten Unklarheiten stellt die Verwendung der ORG-Anweisung dar.
So sieht der Code grob aus:
Code:
list p=12C672 ; Prozessortyp
; list directive to define processor
#include <p12c672.inc> ; processor specific variable definitions
__CONFIG _CP_ALL & _PWRTE_ON & _WDT_OFF & _WDTE_OFF & _HS_OSC
... EQU ...
... etliche EQU Registeradressen-Benennungen
#define ..
... einige #define - Anweisungen
org 5
goto start
; Initialisierung
; Main - Dauerschleife
org 03ffh
return
end
Ich kann mir nicht erklären, welchen Zweck das erfüllen sollte.
Edit: Dass es den Platz im Speicher angibt, ab wo der folgende Code im PIC abgelegt werden soll, habe ich mittlerweile verstanden.
Warum nimmt man dann aber die Adresse 0x05 und nicht einfach die 0x00?
Hat da jemand eine Idee?
Wenn ich den Code mit MPLAB X IDE v3.50 im Simulator versuche zu debuggen, kommt bei mir die Fehlermeldung
no source code lines were found at current pc 0x0
.
Wenn ich den Code auf ändere, funktioniert das debuggen problemlos.
Ich verstehe nur leider weder die Fehlermeldung noch den Grund, warum die Fehlermeldung nach dieser Änderung nicht mehr auftaucht.
Desweiteren verstehe ich die Verwendung der ORG-Anweisung auf in folgendem Artikel an mehreren Stellen nicht:
http://rn-wissen.de/wiki/index.php?title=PIC_Assembler
Code:
org 0x03B8 ; diese Adresse kann gleich max.Adresse - 47h sein
org 0x0023 ; hier fängt das "Erstes" an
ORG 0x0358 ; diese Adresse kann gleich max.Adresse - A7h sein
org 0x3EF ; diese Adresse kann gleich max.Adresse - 10h sein
org 0x001E ; ab da kann eigener Code anfangen
org 0x3DF ; diese Adresse kann gleich max.Adresse - 20h sein
Wie kommt man auf genau diese spezifischen Speicherstellen?
Besten Dank im Voraus!
Wenn ihr weitere Informationen von mir braucht, bekommt Ihr die natürlich gerne!
Beste Grüße
Matze
Lesezeichen