Definition der Assemblersprache

Was ist eine Assemblersprache?

Eine Assemblersprache ist eine Art Low-Level-Programmiersprache, die direkt mit der Hardware eines Computers kommunizieren soll.Im Gegensatz zur Maschinensprache, die aus binären und hexadezimalen Zeichen besteht, sind Assemblersprachen so konzipiert, dass sie von Menschen lesbar sind.

Low-Level-Programmiersprachen wie die Assemblersprache sind eine notwendige Brücke zwischen der zugrunde liegenden Hardware eines Computers und den höheren Programmiersprachen wie Python oder JavaScript, in denen moderne Softwareprogramme geschrieben werden.

Die zentralen Thesen

  • Eine Assemblersprache ist eine Programmiersprache, die Hochsprachen in Maschinensprache übersetzt.
  • Es ist eine notwendige Brücke zwischen Softwareprogrammen und den ihnen zugrunde liegenden Hardwareplattformen.
  • Die Assemblersprache stützt sich auf Sprachsyntax, Bezeichnungen, Operatoren und Anweisungen, um Code in verwendbare Maschinenanweisungen umzuwandeln.
  • Die Assemblersprache kann Single-Pass- oder Multi-Pass-Assembler durchlaufen, die jeweils spezifische Verwendungszwecke und Vorteile haben.
  • Heutzutage werden Assemblersprachen selten direkt geschrieben, obwohl sie immer noch in einigen Nischenanwendungen verwendet werden, beispielsweise wenn die Leistungsanforderungen besonders hoch sind.

Wie Assemblersprachen funktionieren

Grundsätzlich sind die grundlegendsten Befehle, die von einem Computer ausgeführt werden, Binärcodes, die aus Einsen und Nullen bestehen.Diese Codes werden direkt in die „Ein“- und „Aus“-Zustände der Elektrizität übersetzt, die sich durch die physischen Schaltkreise des Computers bewegt.Im Wesentlichen bilden diese einfachen Codes die Grundlage der „Maschinensprache“, der grundlegendsten Variante der Programmiersprache.

Natürlich wäre kein Mensch in der Lage, moderne Softwareprogramme zu konstruieren, indem er explizit Einsen und Nullen programmiert.Stattdessen müssen sich menschliche Programmierer auf verschiedene Abstraktionsebenen verlassen, die es ihnen ermöglichen, ihre Befehle in einem für Menschen intuitiveren Format zu artikulieren.

Insbesondere geben moderne Programmierer Befehle in sogenannten „Hochsprachen“ aus, die eine intuitive Syntax wie ganze englische Wörter und Sätze sowie logische Operatoren wie „and“, „or“ und „else“ verwenden, die sind dem alltäglichen Gebrauch vertraut.

Letztendlich müssen diese High-Level-Befehle jedoch in Maschinensprache übersetzt werden.Anstatt dies manuell zu tun, verlassen sich Programmierer auf Assemblersprachen, deren Zweck es ist, automatisch zwischen diesen Hoch- und Niedrigsprachen zu übersetzen.Die ersten Assemblersprachen wurden in den 1940er Jahren entwickelt, und obwohl moderne Programmierer und moderne Prozessoren natürlicher Sprache sehr wenig Zeit damit verbringen, sich mit Assemblersprachen zu befassen, bleiben sie dennoch für die Gesamtfunktion eines Computers unerlässlich.

In den frühen Tagen des Rechnens fanden sowohl die Systemprogrammierung als auch die Anwendungsprogrammierung vollständig in Assemblersprache statt.Ohne Assemblersprachen wären viele moderne Computer und höhere Sprachen, die wir heute verwenden, nicht möglich gewesen.

Komponenten der Assemblersprache

Syntax

Beim Schreiben von Code in einer beliebigen Programmiersprache gibt es eine beobachtbare, spezifische Reihenfolge von Regeln, die befolgt werden müssen, damit ein Compiler den Code fehlerfrei ausführen kann.Diese Regeln werden als Syntax definiert und enthalten Kriterien wie die maximale Anzahl zulässiger Zeichen, mit welchen Zeichen Codezeilen beginnen müssen oder was bestimmte Symbole "z. B. ein Semikolon" bedeuten.

Etikett

Ein Label ist ein Symbol, das die Adresse darstellt, an der eine Anweisung oder Daten gespeichert sind.Sein Zweck besteht darin, als Ziel zu fungieren, wenn in einer Anweisung darauf verwiesen wird.Etiketten können überall dort verwendet werden, wo eine Adresse in Assemblersprachen verwendet werden kann.Eine symbolische Bezeichnung besteht aus einem Bezeichner gefolgt von einem Doppelpunkt, während numerische Bezeichnungen aus einer einzelnen Ziffer gefolgt von einem Doppelpunkt bestehen.

Betreiber

Operatoren, die auch als Befehle bezeichnet werden, sind logische Ausdrücke, die nach dem Beschriftungsfeld auftreten.Außerdem muss ihm mindestens ein Leerzeichen vorangestellt werden.Operatoren können entweder Opcode oder Direktive sein.Opcodes entsprechen direkt Maschinenbefehlen, und der Operationscode enthält jeden Registernamen, der dem Befehl zugeordnet ist.Alternativ sind Direktiven-Operationscodes Anweisungen, die dem Assembler bekannt sind.

Richtlinie

Direktiven sind Anweisungen an den Monteur, die ihm mitteilen, welche Aktionen während des Montageprozesses ausgeführt werden müssen.Direktiven haben die Bedeutung, Speicher für Variablen zu deklarieren oder zu reservieren; diese Variablen können später in Prozessen abgerufen werden, um dynamischere Funktionen auszuführen.Direktiven werden auch verwendet, um Programme in verschiedene Abschnitte zu unterteilen.

Makro

Ein Makro in Assemblersprache ist ein Vorlagenschuhformat, das eine Reihe oder ein Muster von Anweisungen darstellt.Diese Folge von Anweisungen in Assemblersprache kann mehreren verschiedenen Programmen gemeinsam sein.Eine Makroeinrichtung wird verwendet, um Makrodefinitionen zu interpretieren, während ein Makroaufruf in den Quellcode eingefügt wird, wo "normaler" Assemblercode anstelle des Makrosatzes von Anweisungen hingegangen wäre.

Mnemonik

Eine Mnemonik ist eine Abkürzung für eine Operation.In den Operationscode wird für jeden Assemble-Programmbefehl ein mnemonisches Zeichen eingegeben, um einen verkürzten "Opcode" anzugeben, der einen größeren, vollständigen Satz von Codes darstellt.Zum Beispiel hat die Mnemonik "mit zwei multiplizieren" einen vollständigen Codesatz, der die Mnemonik ausführt.

Hochfrequenzhandel

Heute bleiben Assemblersprachen Gegenstand des Studiums von Informatikstudenten, um ihnen zu helfen zu verstehen, wie moderne Software mit den zugrunde liegenden Hardwareplattformen zusammenhängt.In einigen Fällen müssen Programmierer weiterhin in Assemblersprachen schreiben, etwa wenn die Anforderungen an die Performance besonders hoch sind oder die betreffende Hardware nicht mit aktuellen Hochsprachen kompatibel ist.

Ein solches Beispiel, das für Finanzen relevant ist, sind die Hochfrequenzhandelsplattformen (HFT), die von einigen Finanzunternehmen verwendet werden.Auf diesem Markt ist die Geschwindigkeit und Genauigkeit der Transaktionen von größter Bedeutung, damit sich die HFT-Handelsstrategien als rentabel erweisen.Um sich gegenüber ihren Konkurrenten einen Vorteil zu verschaffen, haben einige HFT-Firmen ihre Handelssoftware daher direkt in Assemblersprachen geschrieben, wodurch es unnötig wird, auf die Übersetzung der Befehle aus einer höheren Sprache in Maschinensprache zu warten.

Viele glauben, dass Assemblersprachen die steilsten Lernkurven haben und die am schwierigsten zu erlernenden Computersprachen sind.

Vorteile und Nachteile

Assemblersprache kann normalerweise schneller ausgeführt werden als Hochsprachen.Es ist relativ einfach, Komponenten von Assemblersprachencode einzufügen oder zu löschen, und Assemblersprache erfordert im Vergleich zu anderen Arten von Sprachen normalerweise weniger Anweisungen, um eine Aufgabe abzuschließen.

Assemblersprachen werden auch oft von Programmierern verwendet, die eine bessere Kontrolle über ihre Computer wünschen, da Assemblersprachen es Ihnen ermöglichen, Ihre Hardware direkt zu manipulieren.Aufgrund ihrer Geschwindigkeit und Bedeutung werden einige Programme speziell in Assemblersprache geschrieben, da der Code normalerweise kleiner bleiben kann.

Assemblersprachen haben in der Regel mehrere Nachteile.Lange Programme, die in Assemblersprache geschrieben wurden, erfordern normalerweise mehr Rechenleistung und können nicht auf kleinen Computern ausgeführt werden.Manche finden es schwieriger, sich die Syntax der Assemblersprache zu merken, und es kann etwas länger dauern, die Assemblersprache zu programmieren, da sie komplexer ist.Außerdem ist die Assemblersprache normalerweise nicht zwischen Computern verschiedener Hersteller übertragbar; ähnlich wie Leistungen an Arbeitnehmer bei einem Unternehmenswechsel verloren gehen, können Sprachen nicht nahtlos auf verschiedene Computer übertragen werden.

Vorteile
  • Die Ausführung kann im Vergleich zu anderen Sprachen einfacher sein

  • Die Ausführung ist im Vergleich zu anderen Sprachen normalerweise schneller

  • Ermöglicht die direkte Steuerung der Hardware

  • Der Code kann im Vergleich zu anderen Sprachen kleiner bleiben

Nachteile
  • Das Programmieren kann im Vergleich zu Hochsprachen schwieriger zu erlernen sein

  • Die Syntax von Assemblersprachen ist schwierig

  • Nicht zwischen Maschinen übertragbar

Arten von Assemblern

Assemblersprache muss mit einem Assembler in Maschinensprache übersetzt werden.Es gibt zwei Haupttypen von Assemblern.

Ein Single-Pass-Assembler scannt ein Programm einmal und erstellt ein äquivalentes Binärprogramm.Diese Art von Assembler validiert Assemblersprachencode, indem er den Code in einer mnemonischen Codetabelle nachschlägt.Ein Single-Pass-Assembler ist oft schneller als ein Multi-Pass-Assembler, und es besteht normalerweise keine Notwendigkeit, Zwischencode zu erstellen.

Ein Multi-Pass-Assembler bedeutet, dass der Assembler mehr als einen Durchgang verwendet.Multi-Pass-Assembler erstellen im ersten Durchgang eine Tabelle mit jedem Symbol und jedem ihrer Werte und verwenden die Tabelle dann in zukünftigen Durchgängen, um neuen Code zu generieren.Jeder separate Durchgang behandelt normalerweise eine andere spezifische Aufgabe.Obwohl normalerweise langsamer, können Multi-Pass-Assembler mit modularem Aufbau oft für verschiedene Maschinen wiederverwendet werden.

Beispiel für einen Assemblersprachencode

Nachfolgend finden Sie ein Beispiel für Netwide Assembler (NASM)-Assemblersprachencode.

Beispiel für einen Assemblersprachencode.

Loyola-Marymount-Universität

In diesem Beispiel löst die SYSCALL-Anweisung gegen Ende des Codes den Teil des Speichers aus, in dem die Betriebssystemdienste gespeichert sind.Dann wird der Code RAX verwendet, um das Schreiben von Code aufzurufen, und dann RDI zum Beenden.Die SYSCALL-Funktion wird zweimal verwendet, um das Betriebssystem aufzurufen und dem System anzuzeigen, wann der Code beendet ist und es Zeit zum Beenden ist.

Was ist ein Beispiel für eine Assemblersprache?

Zu den am häufigsten verwendeten Assemblersprachen gehören ARM, MIPS und x86.

Ist C++ eine Assemblersprache?

C++ besteht nicht aus Assemblercode.Die Computersprache C++ besteht aus C++-Code, den ein Compiler in einen ausführbaren Maschinencode übersetzt.

Ist Python eine Assemblersprache?

Python ist weiter fortgeschritten als Assemblersprachen.Assemblersprachen gelten als Low-Level-Sprachen, während High-Level-Sprachen wie C, Java oder Python 0 und 1 anstelle von Zahlen, Symbolen und Abkürzungen verwenden.

Wie werden Assemblersprachen heute verwendet?

Obwohl sie im Vergleich zu fortgeschritteneren Sprachen als niedrigere Sprachen angesehen werden, werden Assemblersprachen immer noch verwendet.Die Assemblersprache wird verwendet, um Hardware direkt zu manipulieren, auf spezielle Prozessoranweisungen zuzugreifen oder kritische Leistungsprobleme zu bewerten.Diese Sprachen werden auch verwendet, um ihren Geschwindigkeitsvorteil gegenüber Hochsprachen für zeitkritische Aktivitäten wie Hochfrequenzhandel zu nutzen.

Das Endergebnis

Die Assemblersprache ist ein Low-Level-Code, der auf einer starken Beziehung zwischen den in der Programmiersprache eingegebenen Anweisungen und der Art und Weise beruht, wie eine Maschine die Codeanweisungen interpretiert.Code wird mithilfe eines Assemblers, der Eingaben in erkennbare Anweisungen für die Maschine umwandelt, in ausführbare Aktionen umgewandelt.Obwohl in den frühen Tagen der Computertechnik weit verbreitet, verwenden viele größere Systeme höhere Sprachen.