Einführung in Assembler
Die Programmiersprache Assembler ist eine sehr hardwarenahe Programmiersprache. Die Assemblersprache ist je nach Befehlssatz der CPU (Central Processing Unit oder auch Prozessor) individuell zugeschnitten.
Im Assemblercode werden die programmierten Befehle und Operanden grundlegend verständlich für den Menschen dargestellt. Die Grundlage für die Assembler-Programmierung bilden sogenannte Labels.
Labels sind nur symbolische Namen für Speicheradressen. Diese Adressen können sowohl Daten als auch Programmcode enthalten. Ein Label bezeichnet immer nur die Adresse, nie ihren Inhalt. Labels ermöglichen dem Programmierer im Programmcode zu springen, bzw. an bestimmten Stellen bestimmte Adressen aufzurufen.
Assembler Entstehung & Historie
Zwischen 1948 und 1950 wurde der erste Assembler entwickelt. Der Entwickler war Nathaniel Rochester und der Assembler kam auf einem Großrechner von IBM zum Einsatz.
Aufgrund der möglichen Effizienz, die mit Code, der in Assemblersprache geschrieben, erreicht werden kann, war die Sprache für Großrechner unersetzlich. Auch der Einsatz auf kleineren Computern war üblich, denn bis 1990 wurden auch Videospiele meist in der Sprache entwickelt.
Die Beliebtheit der Assemblersprache rührte auch daher, dass es auf den Rechnern nicht viel Arbeitsspeicher gab. Die niedrige Komplexität der Assembler-Operationen machte einen effizienten Programmablauf auch bei niedrigem Speicher möglich. Ab 1990 wurde die Assemblersprache zunehmend von Hochsprachen abgelöst. Da die Geräte über eine wachsende Menge an Arbeitsspeicher verfügten, konnten nun auch komplexere Operationen, wie sie für Hochsprachen üblich sind, eingesetzt werden.
Der größte Ablöser war C, aber auch C++ konnte aufgrund seiner hardwarenahen Arbeit für die gleichen Zwecke verwendet werden. Dennoch ist es auch heute nicht unüblich, dass einige Hochsprachen die Verwendung von kleineren Assembler-Befehlen beinhalten.
Wichtige Merkmale zur Maschinensprache Assembler
Folgende Merkmale besitzt die Maschinensprache Assembler:
- Sie benötigt weniger Speicherplatz und eine geringere Ausführungszeit als andere Programmiersprachen
- Sie ermöglicht die Entwicklung von hardwarespezifischen Aufgaben in einer einfacheren Form.
- Sie ist für zeitkritische Arbeiten geeignet.
- Sie eignet sich am besten zum Schreiben von Interrupt-Serviceroutinen und anderen speicherresidenten Programmen.
Unterschiede zur Hochsprache C
Die Programmiersprache C ist eine Hochsprache, das heißt eine höhere Programmiersprache. Programmiersprachen dienen lediglich dazu, dem Programmierer eine Möglichkeit zu bieten, den Code für den Menschen verständlich zu schreiben. Der Computer würde mit einem C-Programm nichts anfangen können. Assemblercode befindet sich bereits sehr nahe am Maschinencode. Er kann daher auch direkt in Maschinenbefehle übersetzt werden, wohingegen die Hochsprachen komplexere Kompiliervorgänge benötigen.
Kompilieren meint das Übersetzen von menschenlesbarem Code zu maschinenlesbarem Code, ein Compiler ist also ein Programm, welches den C- oder Assemblercode in Binärcodes übersetzt. Beim Kompilieren eines Programms in C entsteht mehr Binärcode als beim Kompilieren des Assemblers.
Ein Compiler, welcher für eine höhere Programmiersprache geschrieben wird, muss stark generalisiert geschrieben werden. C-Programmcode enthält zum Beispiel Variablen, diese sind deklariert und in der Regel initialisiert, das heißt sie besitzen einen Bezeichner, einen Wert und sind von einem bestimmten Typ, im Assemblercode jedoch wird jeder Variable zusätzlich eigene Speicheradresse zugewiesen.
Editoren für die Programmierung mit Assembler
Für die Programmierung in der Assemblersprache gibt es eine Vielzahl von Editoren und Entwicklungsumgebungen für alle Plattformen. Bekannte Editoren sind zum Beispiel AssemblyEdit und Reflexil.
Auch Notepad++ kann für die Programmierung von Assembler verwendet werden. Grundsätzlich lässt sich jeder gewöhnliche Text-Editor für die Programmierung benutzen, jedoch sind spezielle Editoren für die Sprache optimiert.
Assembler in der Praxis
In der Regel wird der Code von Hochsprachen automatisch durch den Compiler in einen Assembler-Code übersetzt. Der Entwickler muss also nicht zwingend selbst einen Assembler-Code schreiben. Dennoch kann es vorkommen, dass der automatisch erstellte Assembler-Code nicht effizient genug ist.
Besonders bei Großrechnern, in denen die Anwendungen sehr zeitkritisch sind, kann ein eigens geschriebenes Assembler-Programm die Effizienz entscheidend steigern und den Programmablauf deutlich beschleunigen.
Vorteile und Nachteile von Assembler
Vorteile von Assembler
- Programmierung in Assembler kann den Code optimieren und kann damit mehr Effizienz erreichen
- Nicht alle systemnahen Operationen sind mit Hochsprachen umsetzbar, die mit der Assemblersprache jedoch problemlos realisierbar sind
- Fördert das Verständnis für ein System
Nachteile von Assembler
- Systemnahes Programmieren ist zwar effizient, erschwert aber die Verwendung des gleichen Codes auf einem anderen System
- Einzelne Assembler-Operationen sind einfach gehalten und nicht sehr komplex. Das führt zu längerem Programm-Code
- Für Programmierung auf einem anderen Computer, müssen neue Befehle und Spezifikationen erlernt werden