02.05.2013 Aufrufe

beginner_de

beginner_de

beginner_de

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Avr-Asm-Tutorial S. 5<br />

Das SLEEP kann sich im Gegensatz zu 9588 hexi<strong>de</strong>zimal auch jemand wie ich merken, <strong>de</strong>r schon<br />

bei <strong>de</strong>r eigenen Telefonnummer Schwierigkeiten hat.<br />

Addieren heißt einfach "ADD". Um die bei<strong>de</strong>n Register auch noch gleich in einer leicht lesbaren<br />

Form mit anzugeben, lautet die gesamte Instruktion "ADD R0,R1". Der gesamte Ausdruck übersetzt<br />

sich in ein einziges binäres 16-Bit-Wort, nämlich 0C01. Die Übersetzung erledigt <strong>de</strong>r Assembler.<br />

Die Formulierung übersetzt <strong>de</strong>r Assembler in exakt das 16-Bit-Wort, das dann im Flash-Speicher<br />

steht, von <strong>de</strong>r CPU dort abgeholt, in ihre interne Ablauffolge umgewan<strong>de</strong>lt und ausgeführt wird. Für<br />

je<strong>de</strong> Instruktion, die die CPU versteht, gibt es ein entsprechen<strong>de</strong>s Mnemonic. Umgekehrt: es gibt<br />

keine Mnemonics, <strong>de</strong>nen nicht exakt ein bestimmter Ablauf einer CPU-Instruktion entspricht. Die<br />

Fähigkeit <strong>de</strong>r CPU bestimmt bei Assembler also <strong>de</strong>n Sprachumfang. Die "Sprache" <strong>de</strong>r CPU selbst<br />

ist also bestimmend, die Mnemonics sind bloß repräsentative Statthalter für die Fähigkeiten <strong>de</strong>r<br />

CPU selbst.<br />

2.4 Unterschied zu Hochsprachen<br />

Hier ist für Hochsprachler noch ein Hinweis nötig.<br />

In Hochsprachen sind die Sprachkonstrukte we<strong>de</strong>r von <strong>de</strong>r Hardware noch von <strong>de</strong>n Fähigkeiten <strong>de</strong>r<br />

CPU abhängig. Die Sprachkonstrukte laufen auf einer Vielzahl von Prozessoren, sofern es für die<br />

Sprache einen Compiler gibt, <strong>de</strong>r die erdachten Schlüsselwörter in CPU-Operationen übersetzen<br />

kann. Ein GOTO in Basic mag so ähnlich aussehen wie ein JMP in Assembler, dahinter steckt aber<br />

ein ganz an<strong>de</strong>res Konzept.<br />

Die Sache mit <strong>de</strong>r Übertragbarkeit auf an<strong>de</strong>re Prozessoren funktioniert natürlich nur, solange <strong>de</strong>r<br />

Controller und seine CPU das mitmacht. Letztlich bestimmt dann die Hochsprache, welcher Prozessor<br />

geht und welcher nicht. Ein ärmlicher Kompromiss, weil er unter Umstän<strong>de</strong>n ganze Welten mit<br />

ihren vielfältigen Möglichkeiten als ungeeignet ausschließt.<br />

Deutlich wird das bei <strong>de</strong>r oben gezeigten Instruktion "MUL". In Assembler kann die CPU das Multiplizieren<br />

entwe<strong>de</strong>r selbst erledigen o<strong>de</strong>r <strong>de</strong>r Assemblerprogrammierer muss sich selbst eine Multiplikationsroutine<br />

aus<strong>de</strong>nken, die das erledigt. In einem für einen ATtiny13 geschriebenen Assembler-Quellco<strong>de</strong><br />

MUL zu verwen<strong>de</strong>n, gibt einfach nur eine Fehlermeldung (Illegal instruction). In einer<br />

Hochsprache wird <strong>de</strong>r Compiler bei einer Multiplikation feststellen, ob eine Multiplikationseinheit<br />

vorhan<strong>de</strong>n ist, dann erzeugt er <strong>de</strong>n Co<strong>de</strong> entsprechend. Ist keine da, fügt er entsprechen<strong>de</strong>n Co<strong>de</strong><br />

ein, ohne dass <strong>de</strong>r Programmierer das bemerkt. Und vielleicht auch noch gleich eine Integer-,<br />

Longword- und an<strong>de</strong>re Multiplikationsroutinen, ein ganzes Paket eben.<br />

Und schon reicht das Flash eines Tiny nicht mehr aus und es muss unbedingt ein Mega mit Dutzen<strong>de</strong>n<br />

unbeschalteter Pins sein damit <strong>de</strong>r Elefant nicht benutzter Routinen reinpasst.<br />

2.5 Assembler und Maschinensprache<br />

Assembler wird wegen seiner Nähe zur Hardware auch oft als Maschinensprache bezeichnet. Das<br />

ist nicht ganz exakt, weil die CPU selbst nur 16-bittige Worte, aber nicht die Zeichenfolge "ADD<br />

R0,R1" versteht. Der Ausdruck "Maschinensprache" ist daher eher so zu verstehen, dass <strong>de</strong>r Sprachumfang<br />

exakt <strong>de</strong>m <strong>de</strong>r Maschine entspricht und <strong>de</strong>r Assembler nur menschenverständliche Kürzel<br />

in maschinenverständliche Binärworte verwan<strong>de</strong>lt.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!