Zum Inhalt springen

Informatik · Klasse 10–13 · aktualisiert

Assembler verstehen: Befehle, Register, Schleifen

Du lernst, was Assemblersprache ist, wie Register, Befehle und Sprünge zusammenarbeiten, und verfolgst eine Schleife Schritt für Schritt.

0 von 10 Aufgaben gelöst

Assembler verstehen: Befehle, Register, Schleifen

Kurz gesagt

Assemblersprache ist eine Programmiersprache mit Kürzeln wie „mov“ für einen bestimmten Prozessortyp. Ein Assembler übersetzt sie in Maschinensprache. Assemblercode ist architekturabhängig: Er lässt sich im Allgemeinen nicht ohne Anpassung auf andere Prozessoren übertragen.

Jedes Programm läuft am Ende als Folge von Maschinenbefehlen im Prozessor. Assemblersprache ist die Programmiersprache, die diesen Befehlen sehr nahe kommt. Mit ihr siehst du, was sonst hinter Hochsprachen versteckt bleibt. Hier lernst du die Begriffe und verfolgst selbst eine Schleife.

Deine Lernziele

Hake ab, was du schon kannst. Löst du alle Aufgaben eines Abschnitts, hakt Mela das Ziel für dich ab.

4 Abschnitte

Das Wort „Assembler“ meint zwei Dinge, die man leicht verwechselt. Eine Assemblersprache ist eine Programmiersprache, die auf den Befehlsvorrat eines bestimmten Computertyps ausgerichtet ist. Ein Befehl in Maschinensprache besteht aus einem Operationscode (Opcode) und meist weiteren Angaben, den Operanden. Weil Opcodes Zahlenwerte und schwer zu merken sind, nutzt die Assemblersprache leichter merkbare Kürzel in Textform, zum Beispiel „mov“. Diese Kürzel heißen mnemonische Symbole oder Mnemonics. Ein Text in Assemblersprache heißt Assemblercode.

Ein Assembler ist dagegen ein Computerprogramm, das diesen Quelltext in Maschinensprache übersetzt. Dabei ignoriert er Kommentare. Ein Compiler übersetzt Programme einer Hochsprache. Hochsprachen orientieren sich eher an der menschlichen Sprache. Vereinfacht und nicht immer zutreffend sieht man den Unterschied oft so: Ein Compiler macht aus einer Anweisung jeweils mehrere Maschinenbefehle, bei einem Assembler gibt es typischerweise eine Eins-zu-Eins-Abbildung.

Umgekehrt gibt es den Disassembler. Er übersetzt Maschinensprache zurück in Assemblersprache. Das geht, weil es zwischen einfacher Assemblersprache und Maschinensprache eine Eins-zu-Eins-Beziehung gibt. Bezeichner und Kommentare kommen dabei nicht zurück, weil sie bei der Assemblierung verloren gehen.

Im Alltag werden die Wörter oft vermischt: Die Sprache wird kurz auch „Assembler“ genannt, und „Maschinensprache“ und „Assembler(sprache)“ werden häufig gleichgesetzt. Achte deshalb darauf, ob die Sprache oder das Übersetzerprogramm gemeint ist.

Definition

Assemblersprache

Eine Assemblersprache ist eine Programmiersprache, die auf den Befehlsvorrat eines bestimmten Computertyps ausgerichtet ist. Statt Zahlencodes nutzt sie leichter verständliche Kürzel in Textform.

Beispiel: Ein Befehl in Maschinensprache und in Assemblersprache

  1. 1Maschinensprache (x86): 10110000 01100001, hexadezimal B0 61
  2. 2Assemblersprache (Intel-Schreibweise): mov al, 61h
  3. 3Bedeutung: Der hexadezimale Wert 61 steht für dezimal 97. Er wird in den niederwertigen Teil des Registers ax geladen, den man al nennt.
  4. 4Der Assembler übersetzt die Zeile mov al, 61h in diesen Maschinencode.

Merke: Die Assemblersprache ist die Sprache, der Assembler ist das Programm, das sie in Maschinensprache übersetzt. Der Disassembler arbeitet in die Gegenrichtung.

Teste dich

LeichtWas macht ein Disassembler?

Alles auf einen Blick

Assembler

  • Begriffe

    Die Assemblersprache ist die Programmiersprache, der Assembler das Programm, das sie in Maschinensprache übersetzt.

  • Register

    Sie sind sehr schnelle Speicherbereiche im Prozessor. Der Befehlszähler enthält je nach Architektur die Adresse des derzeitigen oder nächsten Befehls.

  • Sprünge

    Ein Label kennzeichnet das Ziel, ein Sprung setzt den Befehlszähler neu. Bedingte Sprünge hängen von Flags ab.

  • Schleife

    loop verringert CX um 1 und springt zurück, bis CX den Wert 0 hat.

  • Architektur

    Assemblercode bildet den Befehlssatz einer Architektur ab und muss bei einem Wechsel im Allgemeinen angepasst werden.

Musteraufgabe · Schritt für Schritt

Zähler hochzählen (ausgedachtes Beispiel)

  1. 1Programm: mov cx, 3 · mov ax, 0 · z: inc ax · loop z
  2. 2Start: CX = 3, AX = 0
  3. 3Durchgang 1: inc ax → AX = 1; loop: CX = 2, Sprung zu z
  4. 4Durchgang 2: AX = 2; loop: CX = 1, Sprung zu z
  5. 5Durchgang 3: AX = 3; loop: CX = 0, die Schleife wird verlassen
  6. 6Ergebnis: Die Schleife läuft 3-mal, am Ende ist AX = 3.

Fehler finden

Prüfe die Schritte dieser Schleife (ausgedachtes Beispiel) In einer Zeile steckt ein Fehler. Tippe sie an.

Lückentext

Wähl in jeder Lücke das passende Wort und prüf dann deine Antworten.

Ein Assembler übersetzt Quelltext in . Beim Befehl loop steht die Zahl der Durchgänge im Register , bei jedem Durchgang sinkt sie um 1. Ein Assemblerprogramm lässt sich im Allgemeinen auf eine andere Prozessorarchitektur übertragen.

Karteikasten

Erst selbst überlegen, dann umdrehen.

Übung mit Feedback

Abschluss-Check: Assembler

LeichtWas sind mnemonische Symbole wie „mov“?
MittelAusgedachtes Programm: mov cx, 5 · mov ax, 10 · z: inc ax · loop z. Welchen Wert hat AX nach dem Ende der Schleife?
SchwerEin Team hat ein Assemblerprogramm für Prozessor X geschrieben (ausgedachtes Beispiel). Es soll auf Prozessor Y mit anderer Architektur laufen. Was gilt für den Quelltext?

Weiterlesen in Informatik