Assembler
Ich weiss, gerade unter
Hobbyelektronikern es gibt nicht allzu viele
ASM-Programmierer. Viele Anfänger möchten
möglichst schnell ans Ziel kommen und dabei mit geringstem Lern
und Programmieraufwand die grössten Projekte durchziehen. Wenn das
erste µC Programm print "Hello World" oder ähnlich lautet und nach dem
flashen dann wie durch Magie dieses "Hello World" auf dem LCD
erscheint, mag das den einen oder anderen zufriedenstellen. Dem
Assemblerprogrammierer nicht. Er braucht vielleicht 40-50 Befehle für
das selbe Programm. Noch länger, ist die Zeit die er für das lesen und
studieren des LCD
Datenblatts braucht. Erscheint dann das "Hello World" auf seinem
Display, hat das für ihn nichts mit Magie zu tun. Es ist für ihn
Logisch. Es zeigt ihm, das er seine Hausaufgaben gemacht und verstanden
hat. Genau das ist seine Belohnung und das hat auch nichts
mit
Masochismus zu tun, wie in den Foren oft behauptet wird. Seltsamerweise
braucht er nur ein Bruchteil des Flashspeichers seines Gegenübers und
kommt auch sonst mit einem Tiny2313 zurecht wo sein Freund einen ATMega
mit 32K und einem Shield mit der Version XYZ benötigt. Der
ASM
Programmierer nutzt keine Compilerflags um seinen Code schneller,
kürzer
oder besser zum machen. Er weiß selbst, wann es wichtig ist Speicher
oder Laufzeit zu
sparen und weiß dies in seinem Code umzusetzen, oder hat den
Ehrgeiz sich das zu erarbeiten. Auch erfindet er das Rad nicht neu.
Aber ab und zu bastelt er ein anderes Rad, oder er passt ein
vorhandenes Rad an. Sonst müsste er evtl. einen Autoreifen an eine
Schubkarre Montieren und das will er nicht. Er will bei seiner
Schubkarre genau wie in seinem Code, Geschwindigkeit und wenig Gewicht.
Jedoch, jeder wie er will. Mit dem bisher gesagten mochte ich niemanden
zu nahe treten
oder Diskussionen entfachen, die am Ende doch zu nichts führen. Die
Foren sind voll davon. Das ganze ist nur meine persönliche Meinung und
die Antwort auf den Vergleich des Assemblerprogrammierers mit einem
Steinzeitmenschen.
Jedoch, es stimmt. Assembler ist zeitaufwendig. Da ich aber mein
Geld nicht mit Programmieren verdienen muss, habe ich diese Zeit. Man
kann
sogar sagen, wenn das recherchieren der Bauteile, das zeichnen des
Schaltplans fertig ist und der Probeaufbau steht, genieße ich diese
Zeit. Mir macht die Programmierung auf unterster Ebene auf alle Fälle
einen riesigen Spass.
Zitat aus einem Forum: ...wer Assembler kann, ist auch ein klein wenig verliebt...
Für alle die ähnlich denken wie ich, möchte ich hier Routinen
vorstellen, die sich bei mir bewährt haben.
Immer wenn ich Zeit und Lust habe, werde ich die ASM-Ecke um weitere
Beiträge erweitern. So
soll mit der Zeit, ein kleines Nachschlagewerk enstehen welches dem
einen oder anderen von Nutzen sein könnte. Das ist
auch eine gute Wiederholung für mich.
Die Artikel sollten nicht als Bibliothek verstanden werden, welche man
blind und ohne sie zu Verstehen in eigene Projekte einbinden
kann, sondern eher als Denkanstoß oder als Alternative zu anderen
Lösungen.
Alle Beispiele lassen sich mit dem AVR Studio 4.19
assemblieren.
Natürlich kann ich als Einzelperson, keinen kompletten Assemblerkurs liefern. Anfänger empfehle ich http://www.mikrocontroller.net/articles/AVR-Tutorial und avr-asm-tutorial.net durchzuarbeiten.
Viel Spass beim Coden,
Jürgen
Tasten
Taster sind das wohl einfachste Eingabeinstrument, welche an einen µC angeschlossen werden können. Wenn ihr wissen wollt wie ich in meinen µC-Projekten Taster entprelle und mit Sonderfunktionen belege, dann lest am besten mal in meinem ersten Beitrag im Assemblerteil indem es um...
- Einfache Entprellung
- Entprellung mit Flankenerkennung
- Kurze, lange doppelte Tastendrücke
- Gleichzeitiges drücken zweier Tasten
- Autorepeat
... geht
Rechnen in Assembler
Hier stelle ich meine Grundroutinen zum Multiplizieren und
Dividieren vor.
- Multiplizieren durch schieben
- Der mul Befehl der Mega AVRs
- Multiplizieren in Software
- Dividieren durch schieben (mit Rest oder Gerundet)
- Division durch Multiplikation mit dem Kehrwert
- Dividieren in Software
- Rechnen mit Festkomma
Zum Mathe Teil gehts hier
lang ...