exone schrieb:
> Hallo,
>
> ich habe hier ein kleines Programm, das in Assembler geschrieben ist.
Sicher?
#define ist ein Begriff aus der C Welt. Allerdings spricht auch nichts
dagegen, dass der Erfinder deines Assemblers die Syntax übernommen hat
> In der Header Datei steht #define STAT PORTB,5
Schön.
Wenn ich mal C-Regeln anwende, dann steht da:
überall dort, wo in weiterer Folge der Text 'STAT' auftaucht, ersetze
den Text 'STAT' mit dem Text 'PORTB,5'
> und in der source File also der main steht nochmals #define OUT PORTB,5.
OK.
Also noch eine Vereinbarung:
Überall, wo in weiterer Folge der Text 'OUT' auftaucht, ersetzte den
Text 'OUT' durch den Text 'PORTB,5'
> Wie ihr seht ist mein PORTB,5 nun mit zwei verschiedenen Variablen
> belegt.
Nö.
#define vereinbart einfach nur Textersetzungen. So wie du in deinem
Editor einen Menüpunkt hast 'Text suchen und ersetzen'. Ein #define ist
im Grunde nicht viel mehr, nur dass trickreicherweise die
Textersetzungsoperation in den Text selbst eingebettet ist.
Mit Variablen hat das alles überhaupt nichts zu tun.
> Das Programm lässt sich aber ohne Probleme kompalieren. Welche Variabel
> wird denn nun auf den PORTB,5 sozusagen übertragen ?
Da wird überhaupt nichts 'übertragen'.
Du kannst ja auch zu deiner Freundin Anita 'Schatzi' und wahlweise
'Hasi' sagen
1 | #define SCHATZI Anita
|
2 | #define HASI Anita
|
Die 'Prozessorin', die eine von dir gemachte Wortspende bearbeitet,
ersetzt dann intern für sich jedes 'SCHATZI' mit 'Anita' und auch jedes
'HASI' mit 'Anita' ehe dann der Bearbeitungsprozess losgeht, der einem
'SCHATZI hol bitte Bier' eine Bedeutung zuweist. Zuerst wird die
Textersetzung gemacht, durch die SCHATZI durch Anita ersetzt wird,
wodurch aus dem von dir abgegebenem Satz ein 'Anita hol bitte Bier
wird'. Und erst dann entscheidet die Bearbeiterin, ob der Satz Sinn
ergibt und was damit zu machen ist.