Komponenten

Ein Computer lässt sich auf die folgenden Komponenten reduzieren:

  • Eine CPU
  • Diese hat ein Steuerwerk, welche Befehle annehmen und ausführen oder an die ALU weitergeben kann.
  • Das Rechenwerk(ALU) kann Rechnen oder andere mathematische Operationen.
  • Speicher, welcher Programme und Daten enthält.
  • evtl. Peripherie, wie Ein oder Ausgabegeräte
  • Einen Bus, welcher den Prozessor, Speicher und Peripherie verbindet

Von Neuman Architektur

Solch eine Architektur wird auch Von-Neuman-Architektur genannt. Eine einfachste Abstraktion davon hat einen Speicher, einen Datenbus, einen Addressbus, und einen Akkumulator. Der Speicher hat 1000 Zellen mit den Adressen von 0 bis 999, welche einen Zahlenwert speichern können. Um eine Speicherzelle schreiben oder lesen zu können wird dessen Adresse über den Addressbus ausgewählt. Der Datenbus kann einen Wert schreiben oder lesen.

Der Akkumulator speichert einen Wert und kann diesen verändern. Er kann aus dem Datenbus den Wert laden, Addieren oder subtrahieren. Ebenfalls kann man diesen Wert wieder in den Datenbus reinschreiben. So kann man Werte aus dem Speicher laden und manipulieren Diese Operationen kann mit Programmen im Speicher ausführen.

Über das genaue Laden und Ausführen von Befehlen beschäftigen wir uns nicht in der Tiefe, aber der Prozessor hat einen sogenannten Program Counter, welcher die genaue Speicheradresse beinhaltet und sich nach Abarbeiten eines Befehls erhöht um den nächsten auszuführen. Neben den direkten Speicherbefehlen gibt es noch von der Architektur abhängig weitere Befehle. Der Simulator aus dem Unterricht hat die folgenden Befehle:

Befehl Beschreibung
JMP <Addr> Springt zur angegebenen Adresse (Setzt den PC auf den angegebenen Wert)
TST <Addr> Falls die angegebene Adresse gleich 0 ist wird der nächste Befehl übersprungen
SAVE <Addr> Setzt den Speicher auf den Akkumulator
ADD <Addr> Addiert den Akkumulator um den im Speicher liegenden Wert
SUB <Addr> Subtrahiert den im Speicher liegenden Wert vom Akkumulator
INC <Addr> Erhöht den Wert im Speicher um 1
DEC <Addr> Erniedrigt den Wert im Speicher um 1
HLT Stoppt das Program
NULL <Addr> Setzt die Adresse auf 0
TAKE <Addr> Der Wert aus dem Speicher wird auf den Akkumulator geschrieben