Jahrgangsstufe Q2 - Informatik - Freitag, der 26. Februar 2021


Mein Name:
Jahrgang/Klasse:
Meine E-Mail-Adresse:

Arbeitsmaterial:

Rechnerinterne Vorgänge:

Information

Das kleine DC-Programm unten (vom 23.02.2021) berechnete im Prinzip den Term z = x + y.

AdresseMaschinenbefehl    Bedeutung des Befehls
JMP 5    ; Unbedingter Sprung zur Speicheradresse 5.
DEF 3    ; Platz für eine Variable x mit dem Wert 3.
DEF 7    ; Platz für eine Variable y mit dem Wert 7.
DEF 0    ; Platz für eine Variable z mit dem Wert 0.
   ; Hier steht nichts (oder vielleicht eine 0). Das ist unwichtig.
LDA 1    ; Der Wert an der Adresse 1 wird in den Akkumulator geladen. Das ist x=3.
ADD 2    ; Der Wert an der Adresse 2 wird zum Akkumulatorinhalt addiert. Das ist y=7.
STA 3    ; Der Akkumulatorinhalt (nun 10) wird an der Adresse 3 abgespeichert --> z=10
OUT 3    ; Der Wert an der Adresse 3 wird ausgegeben. Das ist die 10.
END    ; Das Programm wird beendet.

Man sieht Folgendes deutlich: Im Speicher ist nicht an den Inhalten (sind nur Zahlen) erkennbar, ob ein Speicherinhalt eine Variable ist (hier an den Adressen 1, 2 und 3) oder einen Befehl darstellt. Durch den Befehl JMP 5 wird quasi der Speicherbereich von der Adresse 1 bis Adresse 3 für Variablen reserviert.

Auftrag 1:

Mit Hilfe der angegebenen Kurzfassung der DC-Beschreibung sollst Du selbst ein kleines Maschinensprache-Programm entwickeln. Das Programm soll das folgende Programmstück in Java in der DC-Maschinensprache nachbilden (siehe Beispiel vom 25.02.). Achtung: Es gibt keinen Maschinenbefehl für die Multiplikation. Das muss man durch Additionen nachbilden.

  int x = 13;
  int y = 0;
  int z = 0;
  y = 2 * (x + 1);
  z = 3 * y - 1;
  System.out.print(z);

Auftrag 2:

Starte die DOS-Emulation und darin DC wie in DC_und_Dosbox.pdf beschrieben. Gib dann im linken Fenster das oben angegebene Programm ein. Starte das Programm mit R für Run und beobachte den weißen Balken über dem Programmfenster.