Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
| Nächste Überarbeitung | Vorherige Überarbeitung | ||
| gf_informatik:computerarchitektur_sca:aufgaben_b [2023-08-02 11:59] – angelegt sca | gf_informatik:computerarchitektur_sca:aufgaben_b [2025-09-08 13:18] (aktuell) – [Aufgabe B2: Subtraktion] sca | ||
|---|---|---|---|
| Zeile 2: | Zeile 2: | ||
| In diesem Aufgabenset wollen wir nun erste Baby Steps mit dem LMC machen und erste, ganz einfache Progrämmchen schreiben. Stelle auch wieder sicher, dass du das Instruction Set zur Hand hast. | In diesem Aufgabenset wollen wir nun erste Baby Steps mit dem LMC machen und erste, ganz einfache Progrämmchen schreiben. Stelle auch wieder sicher, dass du das Instruction Set zur Hand hast. | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | [[https:// | ||
| + | |||
| ==== Aufgabe B1: Addition ==== | ==== Aufgabe B1: Addition ==== | ||
| Zeile 13: | Zeile 18: | ||
| {{: | {{: | ||
| - | 2) Mit den Befehlen, die du im Aufgabenset A angetroffen hast, solltest du nun in der Lage sein, den zugehörigen Assemblercode zu schreiben. Notiere aber zuerst in Worten einen Plan, wie der Code grob aussehen soll (noch *kein* Assemblercode): | + | 2) Mit den Befehlen, die du im Aufgabenset A angetroffen hast, solltest du nun in der Lage sein, den zugehörigen Assemblercode zu schreiben. Notiere aber zuerst in Worten einen Plan, wie der Code grob aussehen soll (noch *kein* Assemblercode). |
| ++++Lösung| | ++++Lösung| | ||
| Zeile 24: | Zeile 29: | ||
| ++++ | ++++ | ||
| - | 3) Schreibe nun den zugehörigen Assemblercode: | + | 3) Schreibe nun den zugehörigen Assemblercode. |
| + | |||
| + | **Achtung:** Nachdem du den Code geschrieben hast und " | ||
| ++++Lösungen| | ++++Lösungen| | ||
| Zeile 65: | Zeile 72: | ||
| ++++ | ++++ | ||
| + | ==== Aufgabe B2: Subtraktion ==== | ||
| + | |||
| + | Programm: | ||
| + | |||
| + | 1. Die Benutzerin soll nacheinander zwei Zahlen im Input-Feld eingeben können. | ||
| + | 1. Die beiden Zahlen werden dann voneinander subtrahiert und zwar (erste Zahl) - (zweite Zahl). | ||
| + | 1. Das Resultat wird im Speicher gespeichert und ausgegeben. | ||
| + | |||
| + | Auftrag: | ||
| + | |||
| + | 1. Mache einen Programmierplan: | ||
| + | 1. Schreibe folgendes Programm mit dem LMC: | ||
| + | |||
| + | |||
| + | ++++Lösung 1| | ||
| + | |||
| + | 1. Zuerst müssen Zahlen eingegeben werden. Mithilfe des Instruction Sets findest du heraus, wie das geht. | ||
| + | 1. Die eingegebenen Zahlen müssen im RAM zwischengespeichert werden. | ||
| + | 1. Danach ähnlich wie bei Addition: | ||
| + | 1. erste Zahl von Speicher einlesen | ||
| + | 1. zweite Zahl subtrahieren | ||
| + | 1. Resultat speichern und ausgeben. | ||
| + | 1. Programm beenden. | ||
| + | |||
| + | Vielleicht fragst du dich, warum man die Zahlen **zwischenspeichern** muss und sie nach der Eingabe nicht direkt einlesen kann? Hier die Antwort: Verwendet man den Input Befehl, wird die Eingabe direkt in den Akkumulator geschrieben. Der vorherige Wert wird also überschrieben. Würde man rechnen (zweite Zahl) - (erste Zahl), so müsste man deshalb nur die erste Zahl zwischenspeichern. Da man die Subtraktion aber anders herum machen möchte, muss man beide zwischenspeichern. | ||
| + | |||
| + | ++++ | ||
| + | |||
| + | |||
| + | ++++Lösung 2| | ||
| + | |||
| + | <code assembler> | ||
| + | INP | ||
| + | STA 97 | ||
| + | INP | ||
| + | STA 98 | ||
| + | LDA 97 | ||
| + | SUB 98 | ||
| + | OUT | ||
| + | STA 99 | ||
| + | HLT | ||
| + | </ | ||
| + | ++++ | ||