Assembler – Definition und Anwendung
Ein Assembler (wörtlich übersetzt „Zusammensetzer“) ist eine maschinenorientierte Programmiersprache niedriger Ebene und ein Programmiersystem, das diese Sprache verwendet. Assembler sind Programme, die Assemblercode in Maschinensprache übersetzen, d. h. in Binärcode, der Informationen als Kombination von 0 und 1 darstellt. Sie arbeiten sehr nahe an der Prozessorarchitektur und gelten daher als besonders effizient und sparsam.
Einer der ersten Assembler wurde von N. Rochester (1919-2001; USA) für die IBM 701 entwickelt. Die Einführung von Assemblern anstelle von Maschinenbefehlscodes ermöglichte es, Programme in alphanumerischer Form zu schreiben. Die meisten frühen Mikrocomputer mit begrenztem Arbeitsspeicher erforderten handgeschriebene Software, die fast ausschließlich in Assembler geschrieben war, einschließlich BIOS, DOS und Anwendungsprogramme.
Verwendung von Assembler
Jeder Prozessor hat seinen eigenen Befehlssatz, mit dem er angesprochen werden kann. Jeder Prozessor benötigt daher einen eigenen, auf ihn zugeschnittenen Assembler, einschließlich einer eigenen Assemblersprache. Dies hat zur Folge, dass ein Programm, das für einen Prozessor geschrieben wurde, nicht ohne Modifikationen auf einem anderen Prozessor lauffähig ist – Assemblerprogramme sind stark plattformabhängig.
Als Programmiersystem enthält der Assembler die Assemblersprache und einen Übersetzer für diese Sprache, der den Quelltext eines Programms in einer beliebigen Assemblersprache in Objektcode oder direkt ausführbaren Maschinencode umwandelt (assembliert). Assembler wird verwendet, wenn maximale Leistung erforderlich ist oder wenn Operationen nicht in Hochsprachen ausgeführt werden können, wie z.B.:
– präzise Steuerung der Systemhardware,
– Erstellung neuer Treiber,
– Entwicklung und Test neuer Hardware.
Gerätetreiber und einige Betriebssystemkomponenten wie der Kernel oder der Bootloader sind in Assembler geschrieben. Die Amateur-Betriebssysteme MenuetOS und KolibriOS sind vollständig in Assembler geschrieben. Assembler-Code findet sich in Programmen für Spielkonsolen und Multimedia-Codecs.
Assembler Klassifizierung mit Beispielen
| Assembler für DOS | Borland Turbo Assembler (TASM), der Microsoft Macro Assembler (MASM), der Watcom Assembler (WASM), A86 Assembler |
| Assembler für Windows | Die letzte bekannte Version von TASM-5.3 ist nun im Turbo C++ Explorer enthalten. Microsoft unterstützt sein Microsoft Macro Assembler, dessen neueste Versionen in den DDKs enthalten sind. |
| GNU und Linux | Das GNU-Betriebssystem enthält das Binärpaket, das den Gas-Assembler (GNU Assembler) enthält. |
| Portable Assembler | Open-Source-Assembler-Projekt – NASM (Network Assembler), von dem es Versionen für verschiedene Betriebssysteme gibt. |
| Assembler für RISC | Es gibt auch eine Reihe von Assemblern für andere RISC-Architekturen als das X86-System. Dies sind vor allem bestimmte RISC-Architekturen: MCS-51 (Intel 8051); AVR; AVR32; ARM; PIC; MSP430; PowerPC; MIPS, etc. |
Wo genau werden Assembler heute noch eingesetzt? Nennen wir einige Beispiele:
- Betriebssysteme und Compiler. Moderne Betriebssysteme, z.B. Linux-Distributionen, sind in C/C++ geschrieben, aber es gibt Fragmente in C/C++-Assembler.
- Eingebettete Systeme und Treiber.
- Cyber-Sicherheit und Hacking.
- Virtuelle Maschinen/Emulatoren.
Insgesamt erscheint die Assemblersprache nach heutigen Maßstäben sehr umständlich. So sind die Programme mit großer Wahrscheinlichkeit länger als ein vergleichbarer Code in einer Hochsprache, da komplexe Operationen nicht im Befehlssatz enthalten sind und daher selbst programmiert werden müssen. Darüber hinaus sind insbesondere lange Assembler-Programme schwer zu warten, da der minimalistische Code oft schwer zu verstehen ist.