Adressierung
Als Adressierung bezeichnet man die eindeutige Lokalisierung einer Speicherzelle oder eines Geräts in einem Computer. Nur durch eine eindeutige Zuordnung von Adressen zu den Speicherzellen ist es möglich auf abgelegte Daten im Arbeitsspeicher oder auf der Festplatte und auf angeschlossene Geräte wie beispielsweise Drucker, Scanner, Laufwerke gezielt zuzugreifen.
Inhaltsverzeichnis |
Adressierung im Arbeitspeicher
Sie wird beispielsweise verwendet, um die Operanden für eine Rechenoperation im Speicher zu lokalisieren und den Speicherort für das Ergebnis anzugeben. Die Zuführung der Adressen zum Rechenwerk erfolgt dabei über den Adressbus. Je lückenloser die Operanden im Speicher abgelegt sind, desto schneller kann der Datenzugriff erfolgen. Bei idealer Speicherausrichtung erfolgt der Zugriff innerhalb eines Prozessortaktes.
Man unterscheidet fünf Hauptadressierungsarten:
Direkte Adressierung
Bei dieser Adressierungsart wird die Speicheradresse bei jedem Befehl direkt und vollständig angegeben. Die Gesamtheit der möglichen Adressen bildet den Adressbereich dieser Adressierungsart.
# Addiere Adresse 22 und 6 und speichere das Ergebnis in Adresse 1 add 10110, 00110, 00001
Diese Adressierungsart wird heute nur noch in Integrierten Schaltkreisen und Embedded Systems mit wenig Speicherplatz angewandt. So würde in einem 32 bit Rechner ein einfacher Additionsbefehl schon nur für die Adressangaben 66 Bit benötigen. Zur Verringerung des Speicheraufwands werden zwei weitere Möglichkeiten der Adressierung verwendet.
Indizierte und relative Adressierung
Beide Adressierungsarten verwenden ein Register zur Speicherplatzersparnis. Bei der indizierten Adressierung wird das so genannte Indexregister zu jeder Adressangabe hinzuaddiert.
# Addiere die Adresse 22 und 23 und speichere das Ergebnis in Adresse 1 load index, 10110 add 0, 1, 00001
Für das Durchlaufen von Speicherbereichen ist dies hervorragend geeignet. Bei der relativen Adressierung speichert das Register die so genannte Basisadresse und die Adressen für die Befehle werden nur noch als Offset angegeben. Dabei sind negative und positive Offset möglich.
#Addiere die Adresse 65540 und 65550 und speichere das Ergebnis in 65537 /* load basis, 1000000000000000 add 0011, 1101, 0001 */ load basis, 10000000000000000 add 0100, 1110, 0001
Da ein Rechner mehr als ein Register hat, muss ein jeder Befehl dieser Art einen kurzen Verweis enthalten, meist eine 4-bit oder 8-bit Angabe, die das Register angibt. Aber auch diese Adressierungsarten sind für heutige Rechner nicht mehr ausreichend.
Virtuelle Adressierung
Betriebssysteme verwenden die Virtuelle Adressierung, um Programme ausführen zu können, die mehr Speicherplatz benötigen als an physikalischem Arbeitsspeicher im RAM überhaupt zur Verfügung steht. Der gesamte zur Verfügung stehende Speicherplatz wird als Virtueller Adressraum bezeichnet und der Zugriff auf die darin enthaltenene Adressen ist die virtuelle Adressierung. Das jeweilige Betriebssystem verwendet eine Virtuelle Speicherverwaltung, die sich einer Memory Management Unit bedient, um Teile des Programms auf die Festplatte auszulagern und ggf. in den Arbeitsspeicher zu laden, falls sich eine gewählte Adresse außerhalb des im RAM befindlichen Adressraums befindet. Die Angabe der Adressen erfolgt dabei entweder direkt, relativ, indiziert oder auch symbolisch.
Symbolische Adressierung
Symbolische Adressierung erlaubt es dem Programmierer Adressen mit Namen sogenannten Mnemonics zu belegen, um Fehler bei der Angabe der Adresse zu vermeiden.
#Addiere die Adresse 65540 und 65550 und speichere das Ergebnis in 65537 define operand1, 1000000000000011 define operand2, 1000000000001101 define ergebnis, 1000000000000001 add operand1, operand2, ergebnis
Rechnerarchitektur
Die verschiedenen Adressierungsarten werden von der Rechnerarchitektur ermöglicht bzw. realisiert. Analog dazu, wie von der Hausarchitektur die Anordnung der Zimmer bestimmt wird und dass man über das Treppenhaus die oberen Stockwerke erreichen kann.
Adressierung bei Modellbahnen
Im Motorola 2-Format, das ausschließlich für Wechselstrombahnen geeignet ist, können bis zu 80, beim DCC-Format bis zu 9999 Adressen programmiert werden.
Die Adressen werden über Steuerpulte eingestellt und werden im Dekoder eingespeichert. Werden jetzt Fahrbefehle an diese Adresse geschickt, reagiert nur der Dekoder mit dieser Adresse. Sind zwei Dekoder auf die selbe Adresse programmiert, reagieren beide gleichzeitig.
Hinweis
Dieser Artikel basiert auf dem Artikel Adressierung (Datenverarbeitung) aus der freien Enzyklopädie Wikipedia und steht unter der GNU-Lizenz für freie Dokumentation. In der Wikipedia ist eine Liste der Autoren verfügbar. |