Action unknown: copypageplugin__copy

Aufgaben D: Branch mit LMC

Ziel: einen Countdown ($10$ bis $0$) mit dem LMC programmieren.

Dokumentiere die Aufgabe auf OneNote. Mache dazu eine neue Seite.

1) Programmiere zuerst den Countdown mit Python mit einer while-Schleife. Es sollen also einfach der Reihe nach die Zahlen von $10$ bis $0$ ausgegeben werden. Füge den Code als Screenshot in die Dokumentation ein.

Lösungen

2) Notiere in deiner Dokumentation: Mache einen Plan, wie du das mit dem LMC umsetzen willst. Welchen der drei Branch-Befehle verwendest du?

Lösungen

3) Programmiere den Countdown mit LMC. Der Output soll also sein:

Screenshot in Dokumentation einfügen.

Lösungen

4) Am Code von der letzten Aufgabe ist etwas sehr mühsam: Man muss immer zuerst die beiden Zahlen (Startwert $10$ und Schrittgrösse $1$) von Hand in den Speicher schreiben. Ansonsten gibt der Code keinen Countdown aus. Hier gibt es einen Ausweg: Mithilfe des Keywords DAT kann man Daten über den Assemblercode in den Speicher schreiben, z.B.:

        ...
        HLT
FIVE    DAT 5

Im RAM wird dann direkt nach dem 000 von HLT der Wert $5$ gespeichert. Auf die Adresse von Wert $5$ kann man dann über den angegebenen Namen, also hier FIVE zugreifen, z.B. ADD FIVE.

Passe deinen Countdown-Code an, indem du die beiden benötigten Werten (Startwert & Schrittweite) auf diese Weise speicherst und verwendest. Screenshot in Dokumentation einfügen.

Lösung

5) Im Befehl BRP 1 geben wir an, dass wir (falls Akkumulator $\ge 0$) zu Zeile $1$ des Programms springen wollen. Diese Notation wird bei etwas komplexeren Codes schnell mühsam. Denn wenn sich der Code ändert, ändern sich auch die Zeilenreferenzen. Passt man also seinen Code an, muss man ständig die Zeilenreferenzen überprüfen und gegebenenfalls anpassen. Dieses Problem umgehen kann man mit Sprung-Instruktionen:

Kennzeichne eine Zeile Code, du der du springen möchtest, mit einem Keyword, z.B. wird Zeile 1 im Code hier von OUT zu LOOP OUT. Mit <Befehl> LOOP können wir nun jederzeit zu dieser Zeile Code springen, auch wenn sich ihre Position verschiebt. Anstelle von LOOP kann man natürlich jedes beliebige Wort verwenden.

Implementiere dies in deinem Code. Screenshot in Dokumentation einfügen.

Lösung

Ziel: Die Benutzerin soll nacheinander zwei Zahlen eingeben. Es soll dann die grössere der beiden Zahlen ermittelt und ausgegeben werden.

1) Programmiere das Programm zuerst mit Python. Verwende dazu eine if-else-Verzweigung.

Lösung

2) Mache einen Plan: Wie kannst du das Programm mit dem LMC schreiben?

3) Implementiere es mit dem LMC.

Ziel: Der Benutzer soll eine Zahl $n$ eingeben. Es werden dann die ersten $n$ Zahlen der 3-er Reihe ausgegeben: $3,6,9,\ldots$.

1) Programmiere das Programm zuerst mit Python. Dabei dürfen nur die mathematischen Operationen $+$ und $-$ verwendet werden.

Lösung

2) Mache einen Plan: Wie kannst du das Programm mit dem LMC schreiben?

3) Implementiere es mit dem LMC.

Lösungen

  • gf_informatik/computerarchitektur_sca/aufgaben_d.txt
  • Zuletzt geändert: 2023-09-25 07:24
  • von sca