Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
| Nächste Überarbeitung | Vorherige Überarbeitung | ||
| gf_informatik:assembler:aufgaben_c [2024-05-28 06:20] – angelegt hof | gf_informatik:assembler:aufgaben_c [2025-05-26 09:53] (aktuell) – [Aufgabe C4] hof | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ===== Aufgaben C ===== | + | ====== Aufgaben C: Instruktionszyklus ====== |
| - | ==== Aufgabe | + | ==== Aufgabe |
| - | Betrachte | + | <nodisp 2> |
| - | < | + | |
| + | ++++Bemerkung LP| | ||
| + | |||
| + | <color blue> | ||
| + | |||
| + | ++++ | ||
| + | |||
| + | </ | ||
| + | |||
| + | 1. Kopiere | ||
| + | 1. Füge es auf einer leeren Seite in OneNote ein. | ||
| + | 1. Schreibe zu jedem der drei Schritte des Instruktionszyklus eine kurze Zusammenfassung *in eigenen Worten*. | ||
| + | |||
| + | {{ :gf_informatik: | ||
| + | |||
| + | Oder als PDF zum herunterladen und ausdrucken: {{ : | ||
| + | |||
| + | ++++Lösungen| | ||
| + | |||
| + | Siehe {{ : | ||
| + | . | ||
| + | |||
| + | ++++ | ||
| + | |||
| + | ==== Aufgabe C2 ==== | ||
| + | |||
| + | In den Slides haben wir den ersten Durchgang des Instruktionszyklus für das Programm unten genau angeschaut. | ||
| + | |||
| + | < | ||
| LDA 97 | LDA 97 | ||
| ADD 98 | ADD 98 | ||
| Zeile 12: | Zeile 40: | ||
| </ | </ | ||
| - | Arbeite in 2er-Gruppe. | + | 1. Führe dieses Programm nun mit dem LMC aus. Lasse die Simulation mit relativ langsamer Geschwindigkeit laufen: OPTIONS / ' |
| + | 1. Versuche für jede Programmzeile den Instruktionszyklus nachvollziehen zu können. Du sollst zu jedem Zeitpunkt wissen, bei welchem Schritt sich der Zyklus gerade befindet. | ||
| - | 1. Tippe den Code in den LMC (nicht copy-paste). | + | ==== Aufgabe C3 ==== |
| - | 1. Schreibe die beiden Zahlen, die du addieren möchtest, am richtigen Ort in den Speicher. | + | |
| - | 1. Führe das Programm wiederholt aus. Verfolge genau, was wann passiert: | + | |
| - | 1. Beobachte den Instruktionszyklus. | + | |
| - | 1. Stelle sicher, dass du alles verstehst. | + | |
| - | 1. Schreibe den Code so um, dass nun **vier Zahlen addiert** werden können. | + | |
| - | ==== Aufgabe 2 ==== | + | Möchte man ein Programm schreiben, kann man eine Programmiersprache wie Python wählen, oder man kann das Programm direkt in Assemblersprache schreiben. Beides hat Vor- und Nachteile. Notiere für die beiden Arten der Programmierung die jeweiligen Vorteile: |
| - | Schreibe Assembler-Code, | + | * **Vorteile Programmiersprache (z.B. Python)** |
| - | | + | * **Vorteile Assemblersprache** |
| - | | + | |
| - | | + | |
| - | * die Zahl wird um 1 verringert | + | |
| - | Hinweise: | + | <nodisp 2> |
| - | * mit `DAT 1` kann nach dem eigentlichen Programm eine Zahl (z.B. $1$) in den Speicher geschrieben werden, die dann für die Subtraktion verwendet werden kann. | + | |
| - | * die Wiederholung benötigt eine Sprung-Instruktion (Branch, Instruktionen 6-8) - welcher | + | ++++Lösungen (nur LP)| |
| + | |||
| + | | ||
| + | | ||
| - | <nodisp 1> | ||
| - | ++++Lösung: | ||
| - | <code asm> | ||
| - | 0 INP | ||
| - | 1 OUT | ||
| - | 2 SUB 5 // Subtrahiert 1 (s. DAT-Instruktion) | ||
| - | 3 BRP 1 // Springe zurück zu Zeile 1, wenn der Accumulator 0 oder positiv ist. | ||
| - | 4 HLT | ||
| - | 5 DAT 1 // Schreibt die gewünschte Zahl in den Speicher. | ||
| - | </ | ||
| ++++ | ++++ | ||
| + | |||
| </ | </ | ||
| - | ==== Aufgaben 3a-f ==== | + | ==== Aufgabe C4 ==== |
| - | Löse eine der folgenden | + | |
| - | - Eine Zahl einlesen, mit -1 multiplizieren und ausgeben. | + | Schreibe die folgenden |
| - | - Countdown: alle Zahlen von der Eingabe bis 0 ausgeben (mit Labels) | + | |
| - | - Fibonacci-Zahl für die Eingabe berechnen und ausgeben. | + | === I) Verdoppler === |
| - | - Zwei Zahlen einlesen, | + | |
| - | | + | Die Benutzerin soll eine Zahl eingeben können. Der Code berechnet |
| - | - Ganzzahldivision | + | |
| - | - (*** Schwierig ***) Schreibe einen Bootloader: Dieser liest ein anderes Programm vom Input und schreibt es in den Speicher. Wenn eine 000 (HALT) gelesen wird, soll das eingelesene Programm ausgeführt werden. | + | ++++Lösung |
| + | |||
| + | < | ||
| + | INP | ||
| + | STA 99 | ||
| + | ADD 99 | ||
| + | OUT | ||
| + | HLT | ||
| + | </ | ||
| + | |||
| + | ++++ | ||
| + | |||
| + | === II) 3xAddition === | ||
| + | |||
| + | Die Benutzerin soll hintereinander drei Zahlen eingeben können. Der Code berechnet deren Summe und gibt sie aus. | ||
| + | |||
| + | ++++Lösung | ||
| + | |||
| + | < | ||
| + | INP | ||
| + | STA 98 | ||
| + | INP | ||
| + | STA 99 | ||
| + | INP | ||
| + | ADD 98 | ||
| + | ADD 99 | ||
| + | OUT | ||
| + | HLT | ||
| + | </ | ||
| + | |||
| + | ++++ | ||