Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
| Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
| gf_informatik:computerarchitektur_sca:aufgaben_b [2023-08-02 12:01] – [Aufgaben B: Erste Programme mit LMC] sca | gf_informatik:computerarchitektur_sca:aufgaben_b [2025-09-08 13:18] (aktuell) – [Aufgabe B2: Subtraktion] sca | ||
|---|---|---|---|
| Zeile 18: | 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 29: | 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 70: | 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 | ||
| + | </ | ||
| + | ++++ | ||