Inhaltsverzeichnis

Maschinensprache-Aufgaben

Level 1 ;-)

Aufgabe 1

Schreiben Sie jeweils ein kurzes Assemblerprogramm, das den Wert des folgenden Terms berechnet. Verwenden Sie dabei symbolische Adressierung und legen Sie unter folgenden Symbolen diese Werte ab:

AdresseWert
a1
b2
c5
d10
e20
ergebnis0

Das Programm soll das Ergebnis in der mit ergebnis bezeichneten Speicherzelle ablegen und keine "immediate"-Befehle nutzen!

Lösung

Aufgabe 2

Lösen Sie die Aufgabe 1 unter Verwendung der immediate-Befehle.

Lösung

Level 2 ;-)

Aufgabe 3

Schreiben Sie ein Programm, das zu Beginn den Wert 0 in eine mit a bezeichnete Speicherzelle schreibt und anschließend 10-Mal den Wert 2 hinzuaddiert. Das Ergebnis soll bei jeder der zehn Wiederholungen wieder in die Speicherzelle a geschrieben werden.

Lösung

Aufgabe 4

Schreiben Sie ein Programm, das den Wert von $2^6$ berechnet, indem es zu Beginn den Wert 1 in den Akkumulator lädt und diesen dann 6-mal mit dem Wert 2 multipliziert. Am Ende soll das Ergebnis in eine mit ergebnis bezeichnete Speicherzelle geschrieben werden.

Lösung

Aufgabe 5

Schreiben Sie ein Programm, das die Zahlen von 1 bis 10 addiert und das Ergebnis am Ende in eine mit ergebnis bezeichnete Speicherzelle schreibt.

Lösung

Level 3 ;-)

Aufgabe 6

a) Beschreiben Sie, was das folgende Programm macht:

    LOADI 1
    STORE 100
    STORE 101
    STORE 102
s1: LOAD 101
    ADD 100
    STORE 101
    LOAD 102
    MUL 101
    STORE 102
    LOAD 101
    CMPI 6
    JLT s1 
    HOLD

b) Schreiben Sie das Programm in ein leichter lesbares Programm mit symbolischer Adressierung um.

Lösung

Aufgabe 7

Schreiben Sie ein Programm, das die Quadratzahlen von 1 bis 6 einzeln berechnet und addiert.

Lösung

Aufgabe 8

Schreiben Sie ein Programm, das den größten gemeinsamen Teiler zweier natürlicher Zahlen a und b berechnet, indem es so lange die kleinere der beiden Zahlen von der größeren abzieht, bis die beiden Zahlen gleich sind.

Lösung

Aufgabe 9 (nur für Hacker/-innen, nicht prüfungsrelevant!)

Schreiben Sie nur mit den auf der vorherigen Seite vorgestellten Befehlen ein möglichst kurzes Programm, das in die Speicherzellen 100, 101, …, 199, 200 jeweils den Wert 10 schreibt.

Indirekte Adressierung

Der Befehl

LOAD (110)

holt sich eine Adresse und lädt dann den Wert der Speicherzelle mit dieser Adresse in den Akkumulator.

Beispiel: Steht in der Adresse 110 der Wert 120, so bewirkt der obige Befehl, dass der Wert der Speicherzelle 120 in den Akkumulator geladen wird.

  • Dass der Assembler den Opcode für die Indirekte Adressierung verwenden muss, erkennt er an den runden Klammern.
  • Auch viele andere Befehle der Minimaschine gibt es mit indirekter Adressierung, insbesondere den Befehl STORE (Adresse).

Level 4 ;-)

Aufgabe 9

Schreiben Sie mithilfe von indirekter Adressierung ein möglichst kurzes Programm, das

Aufgabe 10

Schreiben Sie mithilfe von indirekter Adressierung ein möglichst kurzes Programm, das die Summe der Werte der Speicherzellen 100, 101, …, 199, 200 berechnet und in eine mit ergebnis bezeichnete Speicherzelle ablegt.

"Final Boss": Abituraufgaben

Aufgabe 11

Aufgabe 12