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 [2023-08-18 06:32] (aktuell) – [Aufgabe B1: Addition] 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 | ||
+ | </ | ||
+ | ++++ |