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
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 |