Pfad:
Home =>
AVR-Überblick =>
Programmiertechniken => Warum Assembler?
(This page in English:
)
Programmiertechnik für Anfänger in AVR Assemblersprache
Assembler oder Hochsprache, das ist hier die Frage. Warum soll man noch eine neue Sprache
lernen, wenn man schon welche kann? Das beste Argument: Wer in Frankreich lebt und nur
Englisch kann, kann sich zwar durchschlagen, aber so richtig heimisch und unkompliziert
ist das Leben dann nicht. Mit verquasten Sprachkonstruktionen kann man sich zwar
durchschlagen, aber elegant hört sich das meistens nicht an. Und wenn es schnell gehen
muss, geht es eben öfter schief.
In der Kürze liegt die Würze
Assemblerbefehle übersetzen sich 1 zu 1 in Maschinenbefehle. Auf diese Weise macht der
Prozessor wirklich nur das, was für den angepeilten Zweck tatsächlich erforderlich
ist und was der Programmierer auch gerade will. Keine extra Schleifen und nicht benötigten
Features stören und blasen den ausgeführten Code auf. Wenn es bei begrenztem
Programmspeicher und komplexerem Programm auf jedes Byte ankommt, dann ist Assembler sowieso
Pflicht. Kürzere Programme lassen sich wegen schlankerem Maschinencode leichter entwanzen,
weil jeder einzelne Schritt Sinn macht und zu Aufmerksamkeit zwingt.
zum Seitenanfang
Schnell wie Hund
Da kein unnötiger Code ausgeführt wird, sind Assembler-Programme maximal schnell.
Jeder Schritt ist von voraussehbarer Dauer. Bei zeitkritischen Anwendungen, wie z.B. bei
Zeitmessungen ohne Hardware-Timer, die bis an die Grenzen der Leistungsfähigkeit des
Prozessors gehen sollen, ist Assembler ebenfalls zwingend. Soll es gemütlich zugehen,
können Sie programmieren wie Sie wollen.
Hinter Assembler steckt die Hardware
Assembler passt 1:1 auf die verfügbare Hardware. Deshalb lernen Sie nicht nur die
Sprache sondern quasi nebenbei auch noch den Prozessorchip von innen kennen. Um einen
Timer zur Mitarbeit zu bewegen, muss man seine Funktionsweise verstehen und kann ihn dann
mit knappen, aber wirkungsvollen vier bis acht Zeilen Assemblercode zu genau dem bringen,
was man von ihm erwartet. Und zwar nicht auf irgendwelchen undurchsichtigen Umwegen
sondern ganz direkt und ohne irgendwelche Schnörkel und Schleifchen. Ob der Timer
nun gerade 8 Bit oder 16 Bit hat, macht nicht nur für seine Funktionsweise einen
himmelweiten Unterschied, sondern auch für seine Programmierung. Jedenfalls lernen
Sie zusammen mit Assembler auch noch die ganze Hardware-Innerei kennen. Und das lohnt
sich, weil es sie zum Scheff über Alles macht und das Zeitalter des sklavischen
Dumm-Users, der einfach nur so lange herumprobiert, bis es irgendwie passt, radikal
durch Wissen und Verstehen beendet. Kann es sein, dass mancher Assembler nur deswegen
kompliziert findet, weil er sich neben den Sprachkonstrukten auch noch mit den internen
Aufbauten des Herrn Prozessors befassen muss?
Assembler ist leicht erlernbar
Es stimmt nicht, dass Assembler komplizierter und schwerer erlernbar ist als Hochsprachen.
Das Erlernen einer einzigen Assemblersprache macht Sie mit den wichtigsten Grundkonzepten
vertraut, das Erlernen von anderen Assembler-Dialekten ist dann ein Leichtes. Der erste Code
sieht nicht sehr elegant aus, mit jedem Hunderter an Quellcode sieht das schon schöner
aus. Schönheitspreise kriegt man erst ab einigen Tausend Zeilen Quellcode. Da viele
Features prozessorabhängig sind, ist Optimierung eine reine Übungsangelegenheit
und nur von der Vertrautheit mit der Hardware und dem Dialekt abhängig. Die ersten
Schritte fallen in jeder neu erlernten Sprache nicht leicht und nach wenigen Wochen
lächelt man über die Holprigkeit und Umständlichkeit seiner ersten
Gehversuche. Manche Assembler-Befehle lernt man eben erst nach Monaten richtig nutzen.
zum Seitenanfang
AVR sind ideal zum Lernen
Assemblerprogramme sind gnadenlos, weil sie davon ausgehen, dass der Programmierer jeden
Schritt mit Absicht so und nicht anders macht. Alle Schutzmechanismen muss man sich selber
ausdenken und auch programmieren, die Maschine macht bedenkenlos jeden Unsinn mit. Kein
Fensterchen warnt vor ominösen Schutzverletzungen, es sei denn man hat das Fenster selber
programmiert. Denkfehler beim Konstruieren sind aber genauso schwer aufzudecken wie bei
Hochsprachen. Das Ausprobieren ist bei den ATMEL-AVR aber sehr leicht, da der Code rasch
um einige wenige Diagnostikzeilen ergänzt und mal eben in den Chip programmiert werden
kann. Vorbei die Zeiten mit EPROM löschen, programmieren, einsetzen, versagen und wieder
von vorne nachdenken. Änderungen sind schnell gemacht, kompiliert und entweder im
Studio simuliert, auf dem STK-Board ausprobiert oder in der realen Schaltung einprogrammiert,
ohne dass sich ein IC-Fuß verbogen oder die UV-Lampe gerade im letzten Moment vor der
großen Erleuchtung den Geist aufgegeben hat.
zum Seitenanfang
Ausprobieren
Nur Mut bei den ersten Schritten. Wenn Sie schon eine Programmiersprache können,
vergessen Sie sie erst mal gründlich, weil sonst die allerersten Schritte schwerfallen.
Hinter jeder Assemblersprache steckt auch ein Prozessorkonzept, und große Teile der
erlernten Hochsprachenkonzepte machen in Assembler sowieso keinen Sinn. Die ersten fünf
Befehle gehen schwer, dann geht es exponentiell leichter. Nach den ersten 10 Zeilen nehmen
Sie den ausgedruckten Instruction Set Summary mal für eine Stunde mit in die Badewanne
und wundern sich ein wenig, was es so alles zu Programmieren und zum Merken gibt. Versuchen
Sie zu Anfang keine Mega-Maschine zu programmieren, das geht in jeder Sprache gründlich
schief. Heben Sie erfolgreich programmierte Codezeilen gut dokumentiert auf, Sie brauchen
sie sowieso bald wieder.
Viel Lernerfolg.
zum Seitenanfang
©2002-2008 by http://www.avr-asm-tutorial.net