A-Side-Projekte |
![]() |
![]() |
Letztmalig dran rumgefummelt: 23.05.24 02:57:42 |
1. A-Side-Assembler und die Z80-CPU |
![]() |
![]() |
![]() |
![]() |
Geschrieben wird nunmehr Assembler-Quellcode - das ist streng genommen nichts weiter als ein Text-File - geht also auch im TXT-Editor. Variablen-Namen sowie Sprungmarken, jedoch auch BREAKPOINT's können definiert werden. Die aktuell mitlaufende Befehlsbeschreibung hilft, schnell Fehler zu korrigieren und Verwandtschaften der Befehle aufzuzeigen. |
||||||||||
![]() |
BREAKPOINTS sind bedeutsam für das spätere Arbeiten mit dem KC-EMU-Debugger von enormer Bedeutung (... aber vorerst viel später!!!) | ||||||||||
![]() |
SPRUNGMARKEN dagegen sind von Anfang an real und sofort da, weil prinzipiell
auch verständlich ![]() |
||||||||||
![]() |
|
2. Laden von Registern sowie Arithmetische Operationen mit den Registern |
![]() |
![]() |
![]() |
![]() |
Dies demonstrieren wir hier von ganz
einfach - also direkt mit Befehlsliste bis hin zum kompletten A-Side-Assembler
mit auch dann schon den Alternativ-Registern. Ziel ist natürlich, dies mit
A-Side-Assembler-Code-nachzuvollziehen, wobei eben Assembler bereits eine erste
"Hochsprache" darstellt - ich muss nicht mehr in der "Hexadzimalwelt" des
Prozessors denken, sondern kann mich auf die konkreten Inhalte der Register
stützen - leider sind diese logischerweise natürlich auch im "HEX-Format" - und
zwar immer - auch, wenn ich aktuelle und aus meiner Warte nur einzelne Bits
betrachte!!! |
||||||||
![]() |
|
3. Auslagern der Ein- und Ausgabewerte auf den RAM |
![]() |
![]() |
![]() |
![]() |
In der Assemblersprache werden die einzelnen Maschinenbefehle durch Textzeilen formuliert. Jeder Befehl entspricht einer Zeile, in, der der Operationscode und die Operanden durch Abkürzungen geschrieben werden. Statt, der Speicheradresse, p die der Maschinenbefehl gespeichert wird, bekommt die Assemblerzeile einen Namen (Marke). Da der Rechner jedoch nur Maschinenbefehle versteht, muss ein Assemblerprogramm in Maschinenbefehle umgewandelt werden. Dies realisiert der Assembler. |
||||||||
![]() |
|
4. Stack-Operationen |
![]() |
![]() |
![]() |
![]() |
Die weitaus meisten Stapel-Operationen werden vom Programmierer unbeeinflusst automatisch vom System wahrgenommen (nicht zuletzt gilt für die Praxis: "... das Stack-Pointer-Register ist für Programmierer-Anwendungen absolut tabu, es sei denn, es wird nicht verändert!). |
|||||||||||||||
![]() |
|
5. Subroutines und RET |
![]() |
![]() |
![]() |
![]() |
Eigenständige Subroutinen werden gehandelt wie Programmschleifen, also in sich wiederkehrende Programmabschnitte, aber diesmal eben nicht immer an gleicher Stelle - sondern eben an verschiedenen Stellen im Hauptprogramm mit wiederkehrend gleichen Schritten, jedoch verschiedenen Parametern |
||||||||||
![]() |
|
6. Standard-Subroutines und Stack-Operationen |
![]() |
![]() |
![]() |
![]() |
Die Standard-Subroutinen sind im LC-80 fest implementiert und können nur dann "umgeschrieben" werden, wenn ich sie genau kenne oder in einen neuen Betriebssystem-Schalkreis neu "einbrennen". Allerdings lässt sich damit in Bezug auf die doch bescheidene Hardware. |
|||||||||||||||||||||||||
![]() |
|
|||||||||||||||||||||||||
![]() |
|
|||||||||||||||||||||||||
![]() |
|
|||||||||||||||||||||||||
![]() |
|
|||||||||||||||||||||||||
![]() |
|
|||||||||||||||||||||||||
![]() |
|
|||||||||||||||||||||||||
![]() |
|
|||||||||||||||||||||||||
![]() |
|
|||||||||||||||||||||||||
![]() |
|
7. Peripherie-I/O-Komponenten |
![]() |
![]() |
![]() |
![]() |
Vier Bausteine stehen hier in der Warteschlange - jeder in sich extrem komplex, aber für de entsprechende Hardware angepasst auch extrem leistungsfähig. Hier existieren jedoch derzeit lediglich die Ausarbeitungen für PIO sowie CTC - das soll jetzt zügig anders werden. |
![]() |
8. Interrupt-Programmierung |
![]() |
![]() |
![]() |
![]() |
Wenn man bis hierher kommt, dann hat man von der Programmierung externer Rechnerbausteine zumindest schon einmal etwas gehört - auch davon, dass es die Möglichkeit zum Verwenden von Interrupts gibt und dass diese über die Baustein-Programmierung zumindest vorbereitet werden müssen. Auch dass es verschiedene Interrupt-Modi gibt sowie der Umstand, dass diese ganz verschieden voneinander reagier, ist Dir eine bekannte Tatsache - denn ansonsten liest sich das Folgende wie: "... Ägypten???". |
||||||||||||
![]() |
|
||||||||||||
![]() |
|
![]() |
Aussagenlogik, Logik und Kombinatorik, Kanonische Normalformen - aber auch die Gesetze zur logischen Schaltungsentwicklung sowie auch ihre Vereinfachung spielen alle in diese Feld der Grundlagen. Hier einige Tipps, um diese näher zu beschnuppern, oder daran vollkommen zu verzweifeln. | |||||||||||||||
![]() |
|
|||||||||||||||
![]() |
Witz zum Thema: Ein Österreicher sitzt über der Zeitung und
liest. Er unterbricht seine Lektüre, als er liest, dass ein berühmter
Physiker und Nobelpreisträger gestorben ist. |
![]() zur Hauptseite |
© Samuel-von-Pufendorf-Gymnasium Flöha | © Frank Rost im Mai 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 |