Action unknown: copypageplugin__copy

Betrachte das einfache Assemblerprogramm, welches zwei Zahlen, welche im Code gespeichert sind, addiert:

        LDA 97
        ADD 98
        STA 99
        OUT
        HLT

Arbeite in 2er-Gruppe.

  1. Tippe den Code in den LMC (nicht copy-paste).
  2. Schreibe die beiden Zahlen, die du addieren möchtest, am richtigen Ort in den Speicher.
  3. Führe das Programm wiederholt aus. Verfolge genau, was wann passiert:
    1. Beobachte den Instruktionszyklus.
    2. Stelle sicher, dass du alles verstehst.
  4. Schreibe den Code so um, dass nun vier Zahlen addiert werden können.

Schreibe Assembler-Code, der einen Countdown ausführt:

  • eine Zahl wird eingelesen
  • wiederholen, solange die Zahl >= 0 ist:
    • die Zahl wird ausgeben
    • die Zahl wird um 1 verringert

Hinweise:

  • 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 ist der richtige?

Lösung:

Löse eine der folgenden Aufgaben; verwende Labels und Branching Instructions.

  1. Eine Zahl einlesen, mit -1 multiplizieren und ausgeben.​
  2. Countdown: alle Zahlen von der Eingabe bis 0 ausgeben (mit Labels)
  3. Fibonacci-Zahl für die Eingabe berechnen und ausgeben.​
  4. Zwei Zahlen einlesen, das Produkt ausgeben. ​
    • (Optional) Funktioniert die Lösung auch mit negativen Zahlen?​
  5. Ganzzahldivision​
  6. (* 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.​
  • gf_informatik/assembler/aufgaben_c_alt.txt
  • Zuletzt geändert: 2024-05-31 15:40
  • von hof