====== 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:
^Adresse^Wert^
|a|1|
|b|2|
|c|5|
|d|10|
|e|20|
|ergebnis|0|
Das Programm soll das Ergebnis in der mit ''ergebnis'' bezeichneten Speicherzelle ablegen und keine "immediate"-Befehle nutzen!
* a) 5 + 10
* b) 2*(10 + 1)
* c) 20/(5 + 2) - 1
[[.aufgabe1:start|Lösung]]
==== Aufgabe 2 ====
Lösen Sie die Aufgabe 1 unter Verwendung der immediate-Befehle.
[[.aufgabe2:start|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.
==== 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.
==== 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.
===== 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.
[[.aufgabe6:start|Lösung]]
==== Aufgabe 7 ====
Schreiben Sie ein Programm, das die Quadratzahlen von 1 bis 6 einzeln berechnet und addiert.
==== 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.
==== Aufgabe 9 (nur für Hacker/-innen, nicht prüfungsrelevant!) ====
Schreiben Sie nur mit den [[..:assembler:start#die_wichtigsten_befehle|auf der vorherigen Seite vorgestellten Befehlen]] (also ohne indirekte Adressierung!) 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.
{{ .:pasted:20251108-205703.png?500 }}
* 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 10 ====
Schreiben Sie mithilfe von indirekter Adressierung ein möglichst kurzes Programm, das
* a) die Speicherzellen 10, 11, ..., 49, 50 jeweils mit dem Wert 117 belegt.
* b) die Speicherzellen 10, 11, ..., 49, 50 mit den Werten 1, 2, 3, ..., 41 belegt.
==== Aufgabe 11 ====
Schreiben Sie mithilfe von indirekter Adressierung ein möglichst kurzes Programm, das die Summe der Werte der Speicherzellen 100, 101, ..., 120 berechnet und in eine mit ''ergebnis'' bezeichnete Speicherzelle ablegt.
====== "Final Boss": Abituraufgaben ======
==== Aufgabe 12 ====
* [[https://www.isb.bayern.de/fileadmin/user_upload/Gymnasium/Leistungserhebungen/Abiturpruefung/Informatik/Informatik_2023_A.pdf|Abitur 2023, Aufgabe III 4]]]
* [[https://www.rupprecht-gymnasium.de/images/abituraufgaben/2023_III.pdf|Lösung dazu]]
==== Aufgabe 13 ====
* [[https://www.isb.bayern.de/fileadmin/user_upload/Gymnasium/Leistungserhebungen/Abiturpruefung/Informatik/informatik_2021_a.pdf|Abitur 2021, Aufgabe III 4]]
* [[https://www.rupprecht-gymnasium.de/images/abituraufgaben/2021_III.pdf|Lösung dazu]]