Beschreibung der Assembler-Programmierung


Beim 4Bit-Prozessor "ERNA" erfolgte die Erstellung des Maschinenprogramms nach folgendem Schema:

    Zunächst wird mit einem Text-Editor, nicht "WORD" - es muss ein "ASCII-Editor" sein, er darf nur die reinen Textzeichen schreiben, keine Formatierung dieser, das Assembler-Programm geschrieben. Womit man diesen Text schreibt, ist also völlig gleich, nur beim Speichern gibt es die Forderung,
die Datei muss mit einer zum System passenden Erweiterung gespeichert werden!
Bei "ERNA" war es ASI, beim 8086 ist es ASM.
Man bezeichnet diese Datei auch als Assembler-Quelle.

Im nächsten Schritt wird mit dem eigentlichen Assembler, einem Programm, das Quellprogramm für den speziellen Prozessor in ein Maschinenprogramm übersetzt (man sagt auch assembliert).
In diesem Schritt werden auch eventuelle syntaktische Fehler ermittelt und bekannt gegeben. Das Ergebnis der Übersetzung wird auch in einer LST-Datei abgelegt, in der der Programmierer auch den genauen Bezug zwischen Assembler- und Maschinenprogramm bekommt. Bei ERNA sah das z.B. so aus. Das Maschinenprogramm steht in den Spalten 3, 4 und 5 von Zeile 06 bis 12 (zeilenweise von links nach rechts gelesen).

Im letzten Schritt kann nun das erarbeitete Maschinenprogramm auf der Rechenmaschine gestartet werden. Bei "ERNA" ist die Maschine der Simulator.

Dass das so auch funktioniert, konnte man bei dem System "ERNA" sehen.

Aber es gibt auch Probleme,
unabhängig davon, dass wir viel zu wenig Befehle zur Verfügung hatten, ist das gezeigte Schema unflexibel.
Es gibt keine Möglichkeit, schon vorhande Programme, wie Unterprogramm oder auch Systemprogramme in das Übersetzungssystem mit einzubeziehen. Zum Beispiel sollte es auch Verbindungen zu Hochsprachensysteme geben.
Um das zu realisieren müssen wir das Assemblersystem erweitern.

    Im "neuen Teil" ist nun die Erweiterung des Assemblers zu sehen. Das stimmt nicht so ganz, denn die Änderung geht auch schon im Assembler los.
Der Assembler erzeugt kein lauffähiges Maschinenprogramm, sondern ein verschiebbares Maschinenprogramm, das heißt nun Objektprogramm. Das bedeutet, es gibt noch z.B. symbolische Sprungadressen, keine festen. Damit kann das Programm an beliebiger Stelle in den Arbeitsspeicher geladen werden. Das ist gut, denn nun können auch andere Programme hinzugefügt werden.
Die Verbindung unseres so übersetzten "Quelle1.obj-Objektprogramms" mit anderen schon vorhandenen Objektprogrammen übernimmt der neue Teil, der Linker (oder auch Binder). Der Linker erzeugt ein festes Maschinenprogramm.
Auch wenn keine anderen Programme mit einbezogen werden sollen, muss immer der Linker arbeiten, da der Assembler generell nun verschiebbare Programme erstellt.

Das Assemblersystem des 8086 verfährt genau nach diesem Prinzip.
Auch vorhergehende 8Bit-Systeme, z.B. der Z80-Prozessor, hatte dieses Schema, natürlich mit geringerer Leistungsfähigkeit wie das vom 8086-System.

Man sieht, es entsteht eine exe-Datei, für die das Betriebssystem Mechanismen zum Start und zur Ausführung hat.

Bevor man sich nun mit dem Assembler beschäftigt, das muss man, um die Schreibweise kennen zu lernen, braucht man zunächst für den Programmierer relevante Informationen zum
Aufbau des Prozessors .
Das können natürlich nur die vom Programmierer nutzbaren Teile, wie Register und Rechenwerk sein.

zurück zur Start-Seite   /   weiter Aufbau des Prozessors