Der ASide-Assembler |
![]() |
![]() |
Letztmalig dran rumgefummelt: 26.03.25 17:24:22 |
![]() |
ASide Assembler ist die wahrscheinlich preiswerteste Form, um in den Besitz eines wirklich guten Werkzeuges für diese Ebene zu kommen, denn in der Fachwelt zahlt man für Assembler recht kräftige Preise - sie liegen auch im günstigsten Falle weit jenseits eines Studenten-Einkommens. |
|||||||||||||||
![]() |
1. ASide benutzen |
|||||||||||||||
![]() |
|
|||||||||||||||
![]() |
Merke: alle Hochsprachen (ja auch C ++) generieren einen nicht optimalen Zwischencode - der ist immer länger, als auf der Assemblerebene entwickelt. | |||||||||||||||
![]() |
|
1. ASide benutzen |
![]() |
![]() |
![]() |
![]() |
ASide ist der gelungene Kompromiss
bezüglich lange bewährtem (Z80) sowie neuester Technologie mit Mikrocontrollern
und das zum minimalen Preis. Dabei ist das System durch einbinden zusätzlicher
Bibliotheken auch zukunftssicher. Für modernere Controller mus ein Upgrade des
Systems erworben werden - lohnt aber nur bedingt - MICROTECH sowie ATMEL bieten
eigene kleine Entwicklungswerkzeuge. |
||||||||||
![]() |
|
||||||||||
![]() |
MACRO - ENDMACRO INCLUDE - INCLUDEBINARY - CAT - END |
||||||||||
![]() |
|
||||||||||
![]() |
|
||||||||||
![]() |
Besonderheiten bei der Befehlsnotation:
|
||||||||||
![]() |
|
||||||||||
![]() |
|
2. Erste Schritte |
![]() |
![]() |
![]() |
![]() |
Im Prinzip sind wir hier der Assembler - auf Grundlage der Kenntnis des Prozessors sowie seiner Möglichkeiten, muss ich auf Assemblerebene denken, anschließend die Konvertierungstabellen studieren und für den gewünschten Befehl den entsprechenden Code heraus suchen - nichts andres macht übrigens ein Assembler. Auch die Notationsfolge sollte eingehalten werden. |
||||||||||||||||||||||||||||||
![]() |
|
||||||||||||||||||||||||||||||
![]() |
|
3. Abstände in A-Side-Programmen |
![]() |
![]() |
![]() |
![]() |
Komplex wird die Adressrechnung erst bei den relativen Adressierungsarten von Sprüngen. Diese liefern zwar optimale Programme, deren Code im RAM verschoben werden kann und dennoch ohne Änderungen lauffähig bleibt, aber die Adressrechnung ist unangenehm. Ich hab' mir deshalb das folgende kleine Tool entwickelt, welches sämtliche Fallen berücksichtigt - und davon gibt es reichlich ;-) |
![]() |
ORG,
EQU und
SETBASE
sowie weitere Pseudo-Kommandos Basis-Adressen
Vereinbarung des Programmstarts (ORG darf nur einmal verwendet werden!!!)
Vereinbarung einer neuen Tabelle
Vereinbarung einer neuen Tabelle |
![]() |
Sprungmarken
Vereinbarung sowie Zugriff auf Sprungmarken Marken mit Großbuchstaben und Ziffern maximal 8 Zeichen |
![]() |
indizierter Verweis auf Tabelle (das bedeutet, die
Tabelle wird nicht auf ihren Beginn gesetzt
ins Register IX wird nicht der Anfang der Tabelle TABLE geladen, sondern um 5 Byte nach oben versetzt und holt sich von dort die zwei aufeinander folgenden Bytes - es werden ja 16 Bit benötigt |
![]() |
Pseudodefinitionen:
|
4. Programmieren mit ASide |
![]() |
![]() |
![]() |
![]() |
Beherrschen der durchaus komplexen relativen Adressrechnung (mit negativen Hexadezimalzahlen) sowie der Aufruf einer eigen programmierten Subroutine und auch das Einbinden einer externen Routine in das aktulee Assebler-Programm werden hier zusammenfassend am Beispiel gezeigt. |
||||||||||
![]() |
|
||||||||||
![]() |
Schleifen - also Zyklen sind Anweisungsblöcke, welche innerhalb einer
bestehenden Struktur komplett identische Anweisungsblöcke ausführen -
Parameteränderung ist hier nicht unbedingt erwünscht, ausgenommen die Zähler in
den Registern, welche durch die definierte Befehlwirkung klar vorgegeben sind:
|
||||||||||
![]() |
selbst geschriebene Subroutinen - alles, was mehr als einmal identisch mit
unterschiedlichen Parametern benötigt wird, ruft nach einer Subroutine
|
||||||||||
![]() |
|
||||||||||
![]() |
|
5. A-Side-Projekte |
![]() |
![]() |
![]() |
![]() |
Beginnend bei einfach tasten wir uns über Zwischenschritte an die großen sowie komplexen Aufgaben heran. Einfache Register-Operationen werden abgelöst durch Operationen auf dem RAM, gefolgt durch die Nutzung von Subroutinen und letztendlich getoppt von der Interruptsteuerung |
![]() |
6. Verwandte Themen |
![]() |
![]() |
![]() |
![]() |
Die Hexadzimalcodierung ist vor allem am Anfang für die von uns in AGs gebastelten Microcomputer sehr vorteilhaft einsetzbar. Das geht alles noch relativ einfach und ist noch auch in der Vermittlung zu verstehen. Kommen dann Assembler hinzu, wird's wesentlich komplizierter, aber natürlic auch einfacher, wenn man diese Werkzeuge beherrscht. |
||||||
![]() |
Hardwarefragen |
||||||
![]() |
Hinweise zur Assemblerprogrammierung |
||||||
![]() |
Softwarefragen |
![]() zur Hauptseite |
© Samuel-von-Pufendorf-Gymnasium Flöha | © Frank Rost im März 2007 |
... dieser Text wurde nach den Regeln irgendeiner Rechtschreibreform verfasst - ich hab' irgendwann einmal beschlossen, an diesem Zirkus nicht mehr teilzunehmen ;-) „Dieses Land braucht eine Steuerreform, dieses Land braucht eine Rentenreform - wir schreiben Schiffahrt mit drei „f“!“ Diddi Hallervorden, dt. Komiker und Kabarettist |