Advanced Light Controller Instruction Code

Über ALIC
Das Prinzip
So funktioniert die Code-Verarbeitung
Vorgaben und Definitionen
Assembler Syntax
Befehls-Referenz
Beispiele
ALIC Implementation für Microchip PICs
Links
Kontakt

Regeln zum Aufbau des ALIC Assembler Quelltextes

Der ALIC Quelltext besteht aus nur wenigen Elementen, die im Folgenden beschrieben werden:

Zahlenwerte

Zahlenwerte können als Dezimalzahlen oder als Hexadezimalzahlen angegeben werden, auch gemischt innerhalb eines Ausdrucks. Hexadezimalzahlen werden durch ein vorangestelltes 0x gekennzeichnet.
Die folgenden Ausdrücke repräsentieren z.B. alle den gleichen Wert (=128):
0x80
128
64 + 0x40

ALIC Befehle

Die Befehlszeile besteht aus dem Befehlskürzel ("Mnemonic") und ggf. für den Befehl notwendigen Parametern. Das Mnemonic muß in Großbuchstaben geschrieben sein und muß mindestens um ein Leerzeichen oder eine Tab-Position ab Anfang der Zeile eingerückt sein. Wenn Parameter vorhanden sind, werden diese durch Kommata getrennt nach dem Befehlskürzel aufgelistet.

Beispiel:
	SMOOTHOFF
BRIGHT 128,50

Kommentare

Kommentare werden durch ein vorangestelltes Semikolon gekennzeichnet. Alles nach dem Semikolon bis zum Ende der Zeile wird als Kommentar behandelt und vom Assembler nicht weiter verarbeitet. Kommentare können in jeder beliebigen Spalte beginnen.

Beispiel:
;************** Dies ist ein Beispiel:
SMOOTHOFF ;Smooth Modus ausschalten
BRIGHT 128,50 ;jetzt wird's plötzlich ganz hell

Labels

Mit Labels können Programmstellen mit einem Namen bezeichnet werden, um diesen dann z.B. in Sprungbefehlen verwenden zu können. Dem Label wird die Speicheradresse des unmittelbar folgenden Befehls zugewiesen. Labels müssen in der ersten Spalte stehen und dürfen Groß- und Kleinbuchstaben, sowie Ziffern und Unterstrich-Zeichen enthalten. Labels können in einer separaten Zeile vor dem Programmbefehl stehen oder gemeinsam mit dem Befehl in einer Zeile.
Es können für die gleiche Programmstelle auch verschiedene Namen vergeben werden, indem mehrere Zeilen mit Labels vor die Programmstelle gesetzt werden.

Beispiel:
entry_ch1 ;Programm für Channel 1 beginnt hier,
entry_ch2 ;für Channel 2 ebenfalls

Blinker LIGHTON 50 ;Licht einschalten, 0,5s lang
LIGHTOFF 50 ;Licht ausschalten, auch 0,5s lang
JUMP Blinker ;zurück zum Anfang der Sequenz

Defines

Damit werden konstante Werte definiert, die im Programmtext unter dem angegebenen Namen aufgerufen werden können. Die Syntax lautet:
#define <Zeichenkette1> <Zeichenkette2>
Im weiteren Programmtext wird bei der Verarbeitung durch den Assembler dann Zeichenkette1 durch Zeichenkette2 ersetzt.

Beispiel:
#define vier 2+2
#define Blinkzeit 50 ;Zeit = 50/100 Sekunden

Blinker LIGHTON Blinkzeit ;Licht einschalten, Dauer = Blinkzeit
LIGHTOFF Blinkzeit+vier ;Licht ausschalten, ein wenig länger
JUMP Blinker ;zurück zum Anfang der Sequenz



counter