2 Grundsätzliche Merkmale von Computern

Größe: px
Ab Seite anzeigen:

Download "2 Grundsätzliche Merkmale von Computern"

Transkript

1 Die befehlsgesteuerte Arbeitsweise eines Computers 2 Grundsätzliche Merkmale von Computern Bevor einzelne Computertypen vorgestellt werden, ist es wichtig, einige grundsätzliche Merkmale zusammen zu stellen. 2.1 Die befehlsgesteuerte Arbeitsweise eines Computers Allen Einheiten mit Computerstruktur ist gemeinsam, dass man ihre zentrale Gesamtfunktion in drei Basisfunktionen bzw. Basis-Einheiten aufteilen kann: die Prozessorfunktion der Prozessor-Einheit (processing unit), die aus einem Prozessor (Ein-Prozessor-System) oder mehreren Prozessoren mit den gleichen Grundfunktionen (Mehr-Prozessor-System) bestehen kann. Im folgenden stehen die Grundfunktionen aus der Sicht eines Prozessors im Vordergrund. die Speicherfunktion der Speicher-Einheit (memory unit) oder einfach Speicher, die Funktion für die Ausführung des Datenverkehrs zwischen Peripherie-Einheiten (peripheral units) und den beiden anderen Funktionen. Man liest für die entsprechende Einheit noch die Bezeichnung Kanal-Einheit (channel unit). Hier soll sie Ein/Ausgabe-Einheit (input/output unit) oder einfach Ein/Ausgabe heißen. Prozessor Speicher Ein/Ausgabe Bild 2.1: Die drei grundsätzlichen zentralen Funktionseinheiten eines Computers Alle Aktivität eines Computers ergibt sich aus der Steuerung durch Befehle. Das bedeutet, dass die Befehle in einer solchen Form verfügbar sind, dass Prozessor sie sich durch geeignete Zugriffe holen und in Aktionen umsetzen kann, die zu jedem Befehl vereinbart sind. Erst die Ausführung einer Folge von Befehlen durch einen Prozessor erzeugt ein gewünschtes Verarbeitungsergebnis. Eine Befehlsfolge kann man von zwei unterschiedlichen Blickwinkeln betrachten: aus der Sicht der Festlegung der Befehlsfolge und aus der Sicht des Ablaufes bei der Ausführung. Die Festlegung der Befehle ergibt eine bestimmte Befehlsreihenfolge, also ein Programm. Für den Beginn des Ablaufes muss der erste auszuführende Befehl in der Reihenfolge festgelegt werden. Es muss nicht der erste in der Programmreihenfolge festgelegte Befehl sein. Was danach geschieht, ist durch die Steuerung des Programmablaufes genau festgelegt. Wenn man die durchlaufenen Befehle aneinander reiht, ergibt sich eine Spur (trace), die schließlich zu dem letzten ausgeführten Befehl im Programm führt. Dieser Befehl muss nicht der letzte Befehl in der programmierten Reihenfolge sein. Bild 2.2 soll einerseits die Reihenfolge der programmierten Befehle (statischer Aspekt) und andererseits die Spur des Ablaufes (dynamischer Aspekt) zeigen. 19

2 Die befehlsgesteuerte Arbeitsweise eines Computers Es wird vereinfacht angenommen, dass der programmierte erste Befehl auch der Startbefehl ist und der programmierte letzte Befehl auch der letzte ausgeführte Befehl ist. Der Ablauf wird symbolisch durch Pfeile beschrieben. Ein wesentlicher Zweck von Programmen ist die Erzeugung von Rechenergebnissen. Es muss also arithmetische Verarbeitungsbefehle geben. Als Beispiel kann man eine Addition nehmen, die zu einem Operanden einen zweiten addiert, z.b. eine 4. Woher nimmt man nun den ersten Operanden und was macht man mit dem Ergebnis? Man muss sich geeignete Objekte schaffen, die als Operanden verwendbar sind und die ein Verarbeitungsergebnis aufnehmen und damit festhalten können. Ein Objekt, dessen Zustand ein Verarbeitungsergebnis festhält, also speichert, dass zu jeder Zeit beim Programmablauf als Operand für einen Verarbeitungsbefehl verfügbar ist, wird im folgenden Datenobjekt genannt. Genau so, wie der Programmierer die Befehlsfolge festlegt, legt er auch die Datenobjekte fest, die die Befehle seines Programms benutzen. Datenobjekte sind - wie die Befehle - integraler Bestandteil eines Programms (Bild 2.2). Bild 2.2: Befehlsgesteuerte Arbeitsweise von Prozessoren Bis hierher war noch keine Rede davon, wie ein Programm für den Prozessor verfügbar gemacht werden kann. Die Befehle müssen in einer (für den Prozessor) interpretierbaren Form ausgedrückt (man sagt: kodiert) werden. Damit sie für den Prozessor lesbar werden, muss man sie in der kodierten Form speichern. Das ist die Aufgabe des Speichers. Beim Holen und Ausführen der Befehle eines Programms ergibt sich ein Strom von Befehlen vom Speicher zum Prozessor und ein Strom von Datenobjekten zum Prozessor bzw. von verarbeiteten (=veränderten) Datenobjekten vom Prozessor zum Speicher (Bild 2.3). Prozessor Prozessor Befehlsstrom Datenstrom Befehlsfolge =Programm 1. Befehl i-ter Befehl letzter Befehl 1. Datenobjekt i-tes Datenobjekt letztes Datenobjekt Speicher Ein/Ausgabe Bild 2.3: Befehls- und Datenstrom beim Programmablauf Um die zentrale Bedeutung des Speichers für die ablauffähigen Programme zu unterstreichen, wird der Speicher auch Hauptspeicher genannt. 20

3 Die befehlsgesteuerte Arbeitsweise eines Computers Hier erkennt man zum ersten Mal, wie man die Arbeitsgeschwindigkeit eines Computers beeinflussen kann: Je mehr Befehle pro Zeiteinheit beim Programmablauf in den Prozessor fließen, um so mehr Verarbeitungsergebnisse werden pro Zeiteinheit erzeugt, um so kürzer ist die Ablaufzeit eines Programms. Bevor aber die Merkmale des Programmablaufes genauer diskutiert werden, soll ein andere Frage im Vordergrund stehen: Wie kommt ein geeignet kodiertes ablauffähiges Programm überhaupt zustande? 2.2 Befehle in der Assemblerform Um dem Programmierer das Programmieren einer zweckgerichteten Befehlsfolge zu erleichtern, sollte man eine selbsterklärende Form der Befehle finden. Aus der Schreibweise sollten die Merkmale der Aktionen, die der Prozessor bei diesem Befehl ausführt, sinnfällig erkennbar sein. Ein Beispiel soll das erläutern (Bild 2.4). Assembler- Programm Prozessor 1. Ass.-Befehl add x,0004h letzter Ass.-Befehl 1. Datendefinition Datendefinition für die Variable x letzte Datendefinition Operation Prinzipielles Format Beispiel: 80x86 1.Operand/ Ergebnis 2.Operand In der Assemblersprache gelten Variablennamen als Identifikatoren für die Datenobjekte, die die Variablen realisieren. Bild 2.4: Beispiel eines Additionsbefehls Eine Addition addiert zwei Operanden und erzeugt dabei ein Ergebnis. Bild 2.4 zeigt am Fall einer beispielhaften Addition, wie man die Merkmale festlegen kann: zuerst den Typ der Operation, hier eine Addition; dann einen Hinweis auf den ersten Operanden; x ist der Name eines Datenobjektes, x dient also als eindeutiges Erkennungsmerkmal (Identifikator) eines Datenobjektes dann den zweiten Operanden, hier die Zahl 4. Diese Merkmale bestimmen folgendes Operationsergebnis: alter Zustand des Datenobjektes x plus 4. Jetzt ist noch wichtig, was mit diesem Ergebnis geschehen soll. Im Beispiel macht man eine stillschweigende (also implizite) Annahme: Das Ergebnis wird der neue Zustand des Datenobjektes x. Man kann die Ausführung der Operation auch so beschreiben: x x + 4 oder x := x + 4 oder x = x + 4 Bei der letzten Schreibweise muss man sich auf eine Bedeutung des Gleichheitszeichens einstellen, die nicht der üblichen (mathematischen) Bedeutung des Gleichheitszeichens entspricht. Der beispielhafte Befehl zeigt, dass x der Name eines (in seinem Zustand veränderlichen) Datenobjektes ist. 21

4 Befehle in der Assemblerform Das Beispiel zeigt auch, dass die Schreibweise eines Befehls bestimmten Regeln folgt. Diese Regeln sind den Regeln einer Sprache vergleichbar und werden auch auf einer entsprechenden Abstraktionsebene formal festgelegt. Die Gesamtheit der Befehle, die man beim Programmieren für einen bestimmten (Ziel-)Prozessors verwenden kann, wird Assemblersprache genannt. Ein Programm, das nach den Formalien dieser Sprache programmiert ist, heißt Assemblerprogramm. Das Beispiel entspricht den Regeln der Assemblersprache für die weit verbreiteten Intel- Prozessoren. Es zeigt auch nur einige wichtige Aspekte einer Assemblersprache, weil es hier nur um Grundsätzliches geht. Auf der Ebene der Assemblersprache wird ein veränderliches Datenobjekt als die Realisierung einer (abstrakten) Größe angesehen, die man Variable nennt. x ist (aus dieser Sicht) ein Variablenname. In einem Assemblerprogramm wird die Existenz einer Variablen durch eine Definitionsanweisung gesichert, die dem Variablennamen durch eine Typangabe den notwendigen Platz für das Datenobjekt zuordnet (Bild 2.5). Assembler- Programm 1. Ass.-Befehl Prozessor add x,0004h letzter Ass.-Befehl 1. Datendefinition x dw letzte Datendefinition Prinzipielles Format Beispiel: 80x86 db=define byte dw= define word Variablenname Definitionstyp Initialisierung Bild 2.5: Beispiel der Definition einer Variablen mit dem Namen x und einem notwendigen Platz von 2 Byte für das realisierende Datenobjekt Will man, dass das Datenobjekt beim Start des Programms einen bestimmten Anfangswert hat, dann kann man diesen ergänzen. Sobald das Datenobjekt konkret erzeugt wird, hält man nicht nur seinen Platz bereit, sondern man stellt seinen Zustand entsprechend ein, der dann zu Beginn des Programmablaufes gilt (Initialisierung). Die Formalien der Schreibweise von Assemblerbefehlen bzw. Definitionsanweisungen für Variable sind in den Assemblersprachen der auf dem Markt befindlichen Prozessoren ähnlich festgelegt wie hier gezeigt. Was ein Assemblerprogrammierer im wesentlichen erlernen muss, ist die Gesamtheit der Befehle, ihre formal richtige Anwendung und - natürlich vor allem - ihre zweckdienliche Anwendung im Sinne des gestellten Problems. Die selbsterklärende Form der Assemblerbefehle hilft ihm sicher beim Erlernen und beim Anwenden. Wichtig ist, dass einem Assembler-Programmierer immer der direkte Bezug zum Ablauf der Befehle möglich ist, da die Reihenfolge der Assemblerbefehle unmittelbar mit dem Programmablauf assoziiert werden kann. Ein Assemblerprogramm ist für den Programmierer verständlich, nicht aber für den Prozessor. Das bedeutet, dass man ein Assemblerprogramm in die für den Prozessor verständliche Form bringen muss. 22

5 Das Maschinenprogramm 2.3 Das Maschinenprogramm Um auch eine begrifflich deutliche Unterscheidung zu machen, nennt man die Befehle, die vom Prozessor verstanden werden, Maschinenbefehle. Das Ergebnis der Umsetzung von Assemblerbefehlen in Maschinenbefehle ist für das beispielhafte Szenario in Bild 2.6 dargestellt. Prozessor Maschinen- Programm 1. Masch.-Befehl z i letzter Masch.-Befehl 1. Datenobjekt add x,0004h Operation= aktuellen Wert der Variablen x holen, Konstante 4 addieren und das Ergebnis als neuen Wert der Variablen eintragen. Identifikator der Variablen x Konstante= 4.. x i.. letztes Datenobjekt In der Maschinensprache gelten Indizes (= Zeiger = Pointer) auf die Datenobjekte als Identifikatoren für die Datenobjekte, die die Variablen realisieren. Bild 2.6: Maschinenprogramm mit den beispielhaften Befehlen xi bzw. zi steht stellvertretend für die Bits des entsprechenden 16-Bit-Wortes Man erkennt die Struktur des Assemblerbefehles in der Struktur des Maschinenbefehles wieder. Der Assembler-Befehl besteht aus drei Abschnitten: dem für die Operation, dem für den ersten Operanden bzw. das Ergebnis, hier den Variablennamen, und dem für den zweiten Operanden, hier die Zahl 4. Der Maschinenbefehl besteht aus drei Abschnitten: 2 Byte für die Angabe der Operation und die Art, wie die folgenden Bytes zu verwenden sind, dann zwei Bytes, die den konkreten Bezug zum Datenobjekt herstellen, und dann zwei Byte, die die Zahl 4 enthalten. Es ergibt sich eine Schwierigkeit, wenn man zur Darstellungsart von Intel konform bleiben möchte. Intel zählt die Bytes fortlaufend von links nach rechts, also bei 16Bit-Wörtern Im Byte mit der kleineren Nummer steht das niederwertige Byte einer 16Bit-Dualzahl und im Byte mit der höheren Nummer das höherwertige Byte. Eine 4 als 16Bit-Dualzahl ist in der mathematischen Darstellung: Durch die Darstellungsart von Intel ergibt sich daraus: Intel folgt der üblichen Schreibrichtung von links nach rechts. Die mathematische Darstellung ordnet die Bytes gemäß der Stellenwertigkeit von rechts nach links an. Diese Darstellung wählen die meisten anderen Hersteller. Sehr wichtig ist nun, wie im Befehl der Bezug zum Datenobjekt hergestellt wird. 23

6 Das Maschinenprogramm Im Assemblerprogramm legt die Gesamtheit der Definitionsanweisungen auch die Gesamtheit der Variablen fest. Die Variablen müssen eindeutig unterscheidbar sein. Es dürfen also keine Variablen mit gleichem Namen vorkommen. Diese Eigenschaft muss genau so für die realisierenden Datenobjekte gelten. Da man jeder Variablen ein Datenobjekt mit einer genau gegebenen Zahl von Byte zuordnet und diese hintereinander im Programm anordnet, kann man Datenobjekte eindeutig durch ihre Lage identifizieren. Es gibt mehrere Möglichkeiten, die Lage anzugeben, z.b. als Zahl der Byte zwischen dem Befehl, in dem zu dem Datenobjekt zugegriffen wird, und dem ersten Byte des Datenobjektes selbst, als Zahl der Bytes zwischen dem Anfang des Programmabschnittes mit den Datenobjekten und dem ersten Byte des Datenobjektes. Wenn man weiß, in welche Speicherzellen im Hauptspeicher das ablauffähige Maschinenprogramm geladen werden wird, kann man auch die Lage des Datenobjektes als Hauptspeicheradresse ihres ersten Bytes angeben. Man nennt die Größe, die die Lage eines Datenobjektes innerhalb eines Programms oder im Hauptspeicher festlegt, im Kontext der Maschinenprogramme meistens Index. Es sind auch die Bezeichnungen Zeiger oder Pointer üblich. Im Bild 2.6 steht zi für die Bits des Index bzw. Zeigers. Indizes mit Hauptspeicheradressen machen Probleme, wenn man die Lage des Programms im Hauptspeicher ändert. Alle Befehle mit solchen Indizes müssen nämlich bei Veränderung der Lage des Programms angepasst werden. Deshalb bevorzugt man in heutigen Computersystemen die andere Art der Indizes, die man auch als relativ (zu einer vereinbarten Basis) ansehen kann. Davon später noch ausführlich. Die Umsetzung eines Assemblerprogramms in das gleichwertige Maschinenprogramm wird mit einem Übersetzerprogramm durchgeführt, das man als Assembler bezeichnet (Bild 2.7). Maschinen- Programm Assembler- Programm 1. Masch.-Befehl z i letzter Masch.-Befehl 1. Datenobjekt.. x i.. letztes Datenobjekt Übersetzer (Assembler) 1. Ass.-Befehl add x,0004h letzter Ass.-Befehl 1. Datendefinition x dw letzte Datendefinition Zur Laufzeit auszuführende Assemblerbefehle werden in entsprechende Maschinenbefehle umgesetzt. Datendefinitionen werden in entsprechende Datenobjekte umgesetzt. Bild 2.7: Die Übersetzung eines Assemblerprogramms in das Maschinenprogramm Assemblerbefehle, die zur Laufzeit wirksam werden sollen, werden in ihre entsprechenden Maschinenbefehle umgesetzt. Variablendefinitionen - auch Datendefinitionen genannt - in entsprechende Datenobjekte. 24

7 Das Maschinenprogramm Sobald man sehr komplexe Programme entwickelt, muss man das Gesamtproblem in überschaubare Teilprobleme aufteilen. Dann hat man einen überschaubaren Aufgabenrahmen, in dem man auch die Richtigkeit des Programms prüfen kann. Aus den geprüften Teilprogrammen wird dann das Gesamtprogramm zusammengesetzt, das man dann als Ganzes prüft. Das Zusammensetzen wird durch ein Programm unterstützt, das man Binder (Linker) nennt (Bild 2.8). Maschinen- Gesamtprogramm 1. Masch.-Befehl z i Binder (Linker) Maschinen- Teilprogramme 1. Masch.-Befehl z i letzter Masch.-Befehl 1. Datenobjekt.. x i.. Übersetzer (Assembler) Assembler- Teilprogramme 1. Ass.-Befehl add x,0004h letzter Ass.-Befehl 1. Datendefinition x dw letztes Datenobjekt letzte Datendefinition letzter Masch.-Befehl 1. Datenobjekt.. x i.. letztes Datenobjekt Bild 2.8: Das Binden von unabhängig entwickelten Teilprogrammen (Modulen) Ein Binder ordnet die Maschinenbefehle der einzelnen Teilprogramme (die auch als Module bezeichnet werden) in der Reihenfolge, wie sie im Binde-Kommando aufgerufen werden, hintereinander. Das Gleiche macht er mit den Datenobjekten der Module. Man erkennt für das beispielhafte Szenario sofort eine wichtige Aufgabe des Binders: alle lageabhängigen Indizes müssen angepasst werden. Das Programmieren in einer Assemblersprache hat den Vorteil, dass der Programmierer sehr einfach den Bezug zum Ablauf herstellen kann. Aber es hat den Nachteil, dass der logische Zusammenhang mit dem Anwenderproblem verwischt wird. Den kann man beim Assembler-Programmieren oft nur durch konsequente begleitende Kommentare im Programmtext herstellen. Aus der Sicht des Programmierens komplexer Probleme ist hilfreich, wenn mathematische oder logische Zusammenhänge auch mit den üblichen Formen ausgedrückt werden können, die sich in den entsprechenden Sachgebieten herausgebildet haben. Das leisten höhere Programmiersprachen. Für Programme in einer höheren Programmiersprache gilt das Gleiche wie für Assembler-Programme: man muss die Möglichkeit haben, sie getrennt zu entwickeln und zu prüfen, und man muss die Möglichkeit haben, die geprüften Teilprogramme zu binden, um sie insgesamt prüfen können und damit verlässlich lauffähig zu machen (Bild 2.9). Der Übersetzer heißt hier Compiler. Außerdem vermeidet man den Begriff Befehl und verwendet stattdessen den Begriff Anweisung (statement). 25

8 Das Maschinenprogramm Maschinen- Gesamtprogramm 1. Masch.-Befehl z i Binder (Linker) Maschinen- Teilprogramme 1. Masch.-Befehl z i letzter Masch.-Befehl 1. Datenobjekt.. x i.. letztes Datenobjekt Compiler Teilprogramme in einer höheren Programmiersprache 1. Anweisung integer x; x = x + 4; letzte Anweisung letzter Masch.-Befehl 1. Datenobjekt.. x i.. Arithmetische Ausdrücke werden in entsprechende Maschinenbefehlsfolgen umgesetzt. Datendefinitionen werden in entsprechende Datenobjekte umgesetzt. letztes Datenobjekt Bild 2.9: Übersetzen und Binden bei höheren Programmiersprachen Es wird im Allgemeinen nicht so sein wie im dargestellten einfachen Fall (Bild 2.9): dass nämlich eine Anweisung direkt in einen einzigen Maschinenbefehl umgesetzt werden kann. Da arithmetische Ausdrücke sehr komplex sein können, ergeben sich auch entsprechend komplexe Befehlsfolgen. Die Aufgabe der Compilerprogrammierer ist es, aus den Ausdrücken effektive Befehlsfolgen zu machen. Ob das so ist, kann der Anwenderprogrammierer in aller Regel nur dadurch feststellen, dass er die Laufzeiten von Programmen vergleicht, die er mit unterschiedlichen Compilern und Bindern erzeugt hat. Das Ziel dieser Einführung in die Computerarchitekturen ist es, die hardwarenahen Aspekte zu erläutern, also von der Ebene der Maschinenprogramme auszugehen. Die Aspekte, die sich mit dem Weg vom Problem zum Programm in einer höheren Programmiersprache beschäftigen, werden hier nicht behandelt. 2.4 Merkmale des Programmablaufes Wie auch immer ein ablauffähiges Maschinenprogramm (im folgenden einfach Programm genannt) zustande kam: damit der Prozessor es Befehl für Befehl lesen kann, muss es in den Hauptspeicher geladen werden. Das Laden eines Maschinenprogramms Man kann ein lauffähiges Programm als eine Folge ansehen, die Befehle und Datenobjekte in einer strengen Reihenfolge vom ersten bis zum letzten Element anordnet. Und genau in dieser Reihenfolge wird das Programm ab einer Speicherzelle in den Hauptspeicher geladen (Bild 2.10), die von einem Programm bestimmt wird, das den Betrieb des Computers steuert, das sog. Betriebssystem. 26

9 Merkmale des Programmablaufes Hauptspeicheranfang Beginn des gespeicherten Programmes Ende des gespeicherten Programmes 1. Befehl i-ter Befehl letzter Befehl 1. Datenobjekt i-tes Datenobjekt letztes Datenobjekt Hauptspeicherende Bild 2.10: Lage eines lauffähigen (Maschinen-)Programms im Hauptspeicher Ein Programm belegt also im Hauptspeicher einen Speicherbereich, der dann für andere Programme so lange nicht zur Verfügung steht, bis es abgelaufen ist und verdrängt werden kann. Für den Ablauf ist nun wichtig, mit welchem Befehl der Ablauf beginnen soll. Das muss nicht der erste gespeicherte Befehl sein. Im Bild 2.11 ist vereinfachend angenommen, dass der erste gespeicherte Befehl auch der Startbefehl ist. Der Ablauf erreicht am Ende den letzten auszuführenden Befehl des Programms, was hier vereinfachend der letzte gespeicherte Befehl sein soll. Im Folgenden wird besprochen, was auf diesem Weg geschieht. Hauptspeicheranfang Startadresse des auszuführenden Programmes Adresse des letzten auszuführenden Befehls 1. Befehl i-ter Befehl letzter Befehl 1. Datenobjekt i-tes Datenobjekt letztes Datenobjekt Hauptspeicherende Bild 2.11: Start, Spur und Ende des Ablaufes eines geladenen Programms Zuerst ist die Frage zu klären, wie man die kleinste abzählbare (adressierbare) Einheit in den Befehlen bzw. im Speicher festlegt, um den wichtigen Begriff der Startadresse zu verstehen. Die kleinste abzählbare (=adressierbare) Einheit im Hauptspeicher In den frühen Mikroprozessoren war die kleinste abzählbare Einheit sowohl für die Maschinenbefehle/Datenobjekte eines Programms als auch für die Speicherzellen des Hauptspeichers 1 Byte. 27

10 Merkmale des Programmablaufes Wenn man zu dieser ursprünglichen Festlegung kompatibel bleiben will, muss man diese kleinste abzählbare Einheit erhalten - auch wenn man die Zahl der Bits pro Speicherwort auf 16, 32 bzw. 64 vergrößert. Das wichtigste Beispiel für eine Weiterentwicklung mit strikter Einhaltung der Kompatibilität sind die Intel-Prozessoren vom 8008 bis zum Pentium 4. Die Vergrößerung der Länge (Anzahl der Bits pro Wort) der Speicherwörter hat einen Vorteil, der im Bild 2.12 deutlich wird. 16-Bit Speicherwortfomat 1. Masch.-Befehl z i letzter Masch.-Befehl 1. Datenobjekt.. x i.. letztes Datenobjekt 1. Masch.-Befehl letzter Masch.-Befehl 1. Masch.-Befehl letzter Masch.-Befehl Bild 2.12: Beispielhaftes Speicherabbild in Abhängigkeit vom Speicherwortformat Die Bytes werden hier gemäß Intel-Darstellung angegeben, d.h. die Bytes werden von links nach rechts im Speicherwort und die Speicherwörter werden von oben nach unten durchnumeriert. Die Bytes des Maschinenprogramms werden von den niederwertigen zu den höherwertigen hin gespeichert. Es gibt eine implizite Annahme in diesem Beispiel: die Zahl der Bytes vom Programmbeginn bis zum ersten Byte des Beispielbefehles ist durch 2, 4 und 8 restfrei teilbar. Der Zugriff zum Hauptspeicher 32-Bit Speicherwortfomat Ein Speicherzugriff bedeutet die Übertragung eines Datenwortes von/zum Speicher. Dabei werden maximal so viele Bits übertragen, wie ein Speicherwort hat. Bei einem lesenden Zugriff (vom Speicher) wird das ganze Speicherwort übertragen. Bei einem schreibenden Zugriff (zum Speicher) muss es (wegen der oben erwähnten Kompatibilität) möglich sein, immer auch die Einheiten auswählen zu können, die in den früheren Systemen auswählbar waren. Befehle werden nur gelesen, weil sie nach dem Laden in den Hauptspeicher unveränderlich sind. Man wird bei einem Speicher mit 16Bit Speicherwortlänge drei Zugriffe für den Beispielbefehl brauchen, bei 32Bit zwei und bei 64Bit einen. Jeder Zugriff braucht eine bestimmte Zeit, die man Speicherzugriffszeit nennt. Wenn erst alle Befehlsbytes geholt werden müssen, bevor ein Befehl ausgeführt werden kann, dann sieht man sofort, wie sich die Wartezeiten und wie sich dementsprechend die Programmlaufzeiten verteilen... z i.. 1. Datenobjekt.. x i.. letztes Datenobjekt.. z i.. 1. Datenobjekt.. x i.. letztes Datenobjekt 64-Bit Speicherwortfomat

11 Merkmale des Programmablaufes Die Adressierung von Speicherwörtern und von Bytes in Speicherwörtern Die Abzählung der Bytes in den Hauptspeicherwörtern ergibt eine Nummerierung, die ihre Lage bezogen auf den Speicheranfang festlegt. Man spricht nun nicht von Nummern, sondern von Hauptspeicheradressen. In diesem Sinne hat ein geladenes Programm eine Anfangsadresse und eine Endadresse. Der Start erfolgt bei einer Startadresse und das Verlassen des Programms bei der Adresse des letzten ausgeführten Befehls. Die Startadresse ist die Adresse des ersten Byte des ersten Befehls. Die Adresse ist eine ganze positive Zahl, die als Dualzahl in einem Wort mit n Bits angegeben wird. In Prozessoren für heutige Computersysteme sind es mindestens 32 Bit. Die Verwendung der Bits für die Adressierung der Speicherwörter bzw. der Bytes in den Speicherwörtern ist in Bild 2.13 dargestellt. Ein geladenes Programm beginnt sinnvollerweise beim Byte 0 eines Speicherwortes. Adreßformat mit Byte als kleinste adressierbare Einheit xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 16-Bit Speicherwortfomat 1. Masch.-Befehl z i letzter Masch.-Befehl 1. Datenobjekt.. x i.. letztes Datenobjekt Adreßformat mit Byte als kleinste adressierbare Einheit xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx Adreßformat mit Byte als kleinste adressierbare Einheit xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 1. Masch.-Befehl letzter Masch.-Befehl 1. Masch.-Befehl letzter Masch.-Befehl 32-Bit Speicherwortfomat Bild 2.13: Beispielhafte Formate für Speicheradressen rot: Bits für die Adressierung der Byte innerhalb eines Speicherwortes schwarz: Bits für die Adressierung der Speicherwörter im Hauptspeicher.. z i.. 1. Datenobjekt.. x i.. letztes Datenobjekt.. z i.. 1. Datenobjekt.. x i.. letztes Datenobjekt 64-Bit Speicherwortfomat Die kompakte Speicherung von Befehlen und Datenobjekten Befehle werden beim Übersetzen bzw. Binden lückenlos aneinander gepackt. Das Gleiche gilt für die Datenobjekte. Eine wichtige Eigenschaft einer Variablendefinition ist, dass man unter einem Namen mehrere Datenobjekte gleichen Typs definieren kann. Bei der Realisierung entsteht eine Reihenfolge von Datenobjekten gleichen Typs. Man nennt das die Definition eines Feldes (array). Bild 2.14 zeigt veranschaulichende Beispiele. 29

12 Merkmale des Programmablaufes 16Bit Speicherwortformat 32Bit Speicherwortformat Ein Feld von 6 Variablen vom Typ Byte Ein Feld von 3 Variablen vom Typ 2 Byte Eine Variable vom Typ 4 Byte Bild 2.14: Beispiele für Felder Es gibt drei markante Merkmale eines Feldes: die Anfangsadresse, die Zahl der Elemente, der Typ jedes Elementes. Wenn man die Datenobjekte konsequent kompakt speichert, dann kann ein Feld bei einer beliebigen Zahl von Bytes enden und das folgende Feld schließt sich unmittelbar an. Das bedeutet, dass die Anfangsadresse eines Feldes eine Byte- Adresse ist, also eine Adresse mit einem Byte als kleinste adressierbare Einheit. Selbststeuernder Programmablauf 64Bit Speicherwortformat Wenn man die Startadresse eines Programms kennt, gibt es ein sehr einfaches Merkmal, das einen sich selbst steuernden Programmablauf ermöglicht. Wenn man an einer bestimmten Stelle in jedem Befehl eindeutig ein Merkmal erkennt, aus dem die Zahl der Bytes für diesen Befehl hervorgeht, dann kann man einfach berechnen, wo der nächste Befehl beginnt. Dort kann man genau so vorgehen (Bild 2.15). 16-Bit Speicherwortfomat 1. Masch.-Befehl z i letzter Masch.-Befehl 1. Datenobjekt.. x i.. letztes Datenobjekt 1. Masch.-Befehl letzter Masch.-Befehl 1. Masch.-Befehl letzter Masch.-Befehl 32-Bit Speicherwortfomat Bild 2.15: Merkmal zur Bestimmung der Lage des beim Ablauf folgenden Befehls Jeder Befehl beginnt mit den Bytes, die die Operation festlegen. Dann folgen die Merkmale der Operanden. Eine konkrete Operation hat immer eine eindeutige Zahl von folgenden Bytes für die Angabe der Operanden. Die Anfangsadresse des.. z i.. 1. Datenobjekt.. x i.. letztes Datenobjekt.. z i.. 1. Datenobjekt.. x i.. letztes Datenobjekt 64-Bit Speicherwortfomat

13 Merkmale des Programmablaufes folgenden Befehls ergibt sich aus der Startadresse des aktuellen Befehls plus der Anzahl der Bytes für diesen Befehl, die der Prozessor aus der Operationsangabe eindeutig zuordnet. Im Fall von Bild 2.15 wird eine Operation mit 2 Bytes kodiert. Der Additionsbefehl umfasst 6 Byte. Gleichgültig, in welchem Speicherformat der Befehl abgelegt wird: die Anfangsadresse des nächsten Befehls ergibt sich durch die Addition von 6 zur Adresse des ersten Byte des Befehls. Ausgehend von einer Startadresse kann man Folgebefehl für Folgebefehl bestimmen, bis man den letzten Befehl des Programms erreicht: ein sich selbst steuernder Ablauf, der aber einen entscheidenden Nachteil hat: Verarbeitungsergebnisse, die sich beim Ablauf ergeben, könnten nie auf den Ablauf Einfluss nehmen. Genau das muss aber möglich sein. Die Steuerung des Programmablaufes durch Verarbeitungsergebnisse Es muss Befehle geben, mit denen man den Programmablauf von Verarbeitungsergebnissen abhängig machen kann. Hauptspeicheranfang Startadresse des auszuführenden Programmes 1. Masch.-Befehl Befehl zur bedingten Fortsetzung des Programmes Adresse des letzten auszuführenden Befehls letzter Masch.-Befehl 1. Datenobjekt letztes Datenobjekt Hauptspeicherende Bild 2.16: Bedingte Fortsetzung eines Programms Die Wirkung eines ablaufsteuernden Befehles ist: wenn die (im Befehl) angegebene Bedingung erfüllt ist, verzweigt der Ablauf zu einem besonders markierten Befehl, sonst geht es normal weiter. Ein Beispiel soll das erläutern. Angenommen, eine Variable x vom Typ 16Bit hat im Augenblick den hexa(dezimalen)-wert f f f c und man addiert dazu eine 4: f f f c Dann erhält die Variable x den hexa-wert mit einem übergelaufenen Bit, das man Übertrag (carry) nennt. In dem Fall, dass die Variable den Wert annimmt, soll zu einem Befehl mit der Markierung Fertig verzweigt werden, in allen anderen Fällen soll es normal weitergehen. 31

14 Merkmale des Programmablaufes Bild 2.17 zeigt die Ablaufalternativen an einem entsprechenden Assemblerbeispiel. 1. Ass.-Befehl add x,0004h jz Fertig Fertig: mov x, 0ffffH Prinzipielles Format Beispiel: 80x86 Operation jz= jump zero lade x mit 1en Bild 2.17: Beispiel für den bedingten Verzweigungsbefehl jump zero mit zwei Ablaufalternativen Der Befehl jump zero prüft, ob bei der vorangegangenen Operation eine Null als Ergebnis herauskam. In diesem Fall hätte man auch ein jump carry anwenden können. Die umgekehrte Abfrage mit jump not zero oder jump not carry muss hier nicht mit Beispielen erläutert werden; sie ist nahe liegend. Das ist nur eine kleine Probe von Befehlen mit bedingter Verzweigung, die reelle Prozessoren bieten. Ziel- Marke letzter Ass.-Befehl 1. Datenobjekt.. x i.. Der letzte auszuführende Befehl letztes Datenobjekt Der Programmlauf erzeugt mit dem normalen und dem bedingten Fortschritt eine Ablaufspur bis zum Befehl, der oben als letzter auszuführender Befehl bezeichnet wurde. Hauptspeicheranfang Startadresse des auszuführenden Programmes 1. Masch.-Befehl Befehl zur bedingten Fortsetzung des Programmes Adresse des letzten auszuführenden Befehls letzter Masch.-Befehl 1. Datenobjekt letztes Datenobjekt Hauptspeicherende Bild 2.18: Der letzte auszuführende Befehl in einem Anwenderprogramm Was bedeutet der letzte auszuführende Befehl aus der Sicht eines Anwenderprogramms, das vom Betriebssystem geladen und gestartet wurde? Ein Anwenderprogramm ist dann zu Ende, wenn alle vom Programmierer gewünschten Ergebnisse erzeugt sind, der Zweck des Programms also erfüllt ist. Der 32

15 Merkmale des Programmablaufes letzte Befehl kann dann nur bedeuten, dass der Ablauf in demjenigen Programm weiter geht, das für den Ablauf des Anwenderprogramms gesorgt hat. Das bedeutet die Rückkehr in das Betriebssystem. Und was bedeutet dann der letzte auszuführende Befehl im Betriebssystem? Das Betriebssystem sorgt für den Ablauf der von dem(den) Benutzer(n) gewünschten Anwendungen. Die Benutzer machen bestimmte Eingaben, z.b. geben sie Kommandos ein, um dem Betriebssystem zu sagen, welche Programme gestartet werden sollen. Leerlauf bedeutet, dass alle bisherigen Eingaben fertig bearbeitet sind und das Betriebssystem auf neue Eingaben wartet. Tatsächlich gibt es in allen universell einsetzbaren Prozessoren einen Befehl, bei dessen Ausführung der Prozessor auf externe Ereignisse mit programmsteuernder Wirkung wartet. Das ist dann der letzte auszuführende Befehl im Betriebssystem. 2.5 Der Grundzyklus der Programmablaufsteuerung und die Reaktion auf äußere Ereignisse Der einfache Grundzyklus Ein Anwenderprogrammierer hat sein Anwenderproblem im Auge und betrachtet den Programmablauf aus dem Blickwinkel der schnellen und anwendungsgerechten Ausführung. Die grundsätzlichen Merkmale des Programmablaufes wurden zunächst aus diesem Blickwinkel beschrieben. Ein Computerarchitekt, der die passenden Schaltungen entwirft und realisiert, hat einen anderen Blickwinkel. Er stellt fest, dass sich die befehlsgesteuerte Arbeitsweise eines Computers eine zyklische Abfolge von zwei aufeinander folgenden Arbeitsvorgängen erzwingt: dem Holen eines gespeicherten Befehls (instruction fetch) und dem Ausführen dieses Befehls (instruction execute) (Bild 2.19). nächsten Befehl holen Befehl ausführen Bild 2.19: Grundzyklus eines Prozessors Dieser Grundzyklus ist die treibende Kraft für die Aktionen eines Computers. Er wird mit dem Einschalten eines Computers gestartet und hält im eingeschalteten Zustand nur dann an, wenn Leerlauf ist. Das bedeutet bei den meisten Prozessoren die Ausführung eines Befehls, in dem auf externe Ereignisse gewartet wird. Eine Alternative ist, einen Befehl auszuführen, der auf sich selbst verzweigt. Würde die Programmablaufsteuerung nur diesen Grundzyklus ausführen, könnten äußere Ereignisse nie auf sie Einfluss nehmen. Eine geeignete Funktion muss möglich machen, dass die Programmablaufsteuerung gezielt zu einer Befehlsfolge verzweigt, die dem aufgetretenen Ereignis eindeutig zugeordnet ist 33

16 Der Grundzyklus der Programmablaufsteuerung und die Reaktion auf äußere Ereignisse Zunächst kann man das Problem aus Anwendersicht veranschaulichen (Bild 2.20). Hauptspeicheranfang spontanes äußeres Ereignis mit programmsteuernder Wirkung 1. Befehl i-ter Befehl letzter Befehl 1. Datenobjekt i-tes Datenobjekt letztes Datenobjekt Hauptspeicherende Bild 2.20: Die Unvorhersehbarkeit eines spontanen externen Ereignisses mit programmsteuernder Wirkung Spontane programmsteuernde Ereignisse sind z.b. Mouseclicks oder Tastaturanschläge oder fertige Kommandoeingaben, um nur einige zu nennen. Sie treten zeitlich unabhängig vom aktuellen Programmablauf auf. Die Frage ist nun, wie man ein solches Ereignis im Rahmen des Grundzyklus erfassen soll? Man kann das Ereignis nur erfassen, wenn man es geeignet kodiert. Es gibt nur zwei Zustände: Ereignis da/ereignis nicht da. Das bedeutet, dass man es als binäres Signal kodieren kann. Wenn der Zustand Ereignis nicht da erfasst wird, soll es keine Verzweigung geben, bei Ereignis da soll eine gezielte Verzweigung ausgeführt werden. Das bedeutet, dass die Abfrage und die Entscheidung nach der Ausführung eines Befehles und vor dem Holen des nächsten eingebaut werden muss (Bild 2.21). nächsten Befehl holen Befehl ausführen Interrupt Request Meldung abfragen: da: spätere Fortsetzung des aktuellen Programmablaufes vorbereiten, Verzweigung einstellen; nicht da: weiter Bild 2.21: Grundzyklus mit Möglichkeit zur Unterbrechung von außen Liegt ein Ereignis vor, kommt es zu einer Unterbrechung des aktuellen Programmablaufs (Interrupt). 34

17 Der Grundzyklus der Programmablaufsteuerung und die Reaktion auf äußere Ereignisse Die nach der Unterbrechung ausgeführte Befehlsfolge nennt man Interrupt Service Routine. Das äußere Ereignis, das einen Interrupt auslöst, heißt Interrupt Anforderung (interrupt request). Während eines Interrupts läuft also eine Befehlsfolge ab, die dann an dem letzten Befehl anlangt, wenn die programmierte Aufgabe der Unterbrechung erfüllt ist. Dann muss die Programmablaufsteuerung in der Lage sein, das unterbrochene und angehaltene Programm mit dem Befehl fortzusetzen, der anstelle der unterbrechenden Verzweigung als nächster geholt und ausgeführt worden wäre. 2.6 Ein Exkurs zur Veranschaulichung der Assemblersprache und des Programmablaufs In diesem Skriptum gelten die Prozessoren der Intelarchitektur IA32 als Beispielarchitektur. In diesem Kontext wird die Assemblersprache ausgewählt. Ein Beispiel zur Assemblersprache und zur Übersetzung Eine Variable x soll mit dem Wert 3H(exadezimal) geladen und dann dazu eine 4H addiert werden. Bild 2.22 zeigt die beiden Befehle und drei Datendefinitionsanweisungen für die Variablen z, y und x, die alle drei mit dem Wert 0 vorbelegt werden. Ein Programmausschnitt mit einfachen Assemblerbefehlen und Datendefinitionen Microsoft (R) Macro Assembler Version /22/3 Page Code SEGMENT 'code' assume cs:code, ds:daten 0000 B R start: mov ax,daten E D8 mov ds,ax 0005 C R 0003 mov x,0003h 000B R 04 add x,0004h 0010 EB FE stop: jmp stop 0012 Code ENDS 0000 Daten SEGMENT 'data' z dw y dw x dw Daten ENDS Bild 2.22: Einfaches Programmbeispiel Man kann nun zeigen, was der Übersetzer daraus macht (Bild 2.23). Jedes Byte wird in Form von zwei Hexa-Ziffern angegeben. Jedem Assemblerbefehl ist eine genau bestimmte Zahl von Bytes zugeordnet, die den Maschinenbefehl bilden und deren Bedeutung vom ersten bis zum letzten Byte genau festgelegt ist. Das erste Byte gibt immer das Bitmuster für die Operation an, die auszuführen ist. Das zweite Byte ergänzt die Operationsangabe. Es zeigt an, welche Bedeutung die danach folgende Angabe der Operanden hat. Die können nämlich unmittelbar, d.h. als Konstante, oder als Adresse angegeben sein, die zu dem Datenobjekt verweist. In den nachfolgenden Bytes folgen die Operanden. 35

18 Ein Exkurs zur Veranschaulichung der Assemblersprache und des Programmablaufs Durch die Übersetzung entstehen Maschinenbefehle und Datenobjekte. Microsoft (R) Macro Assembler Version /22/3 Page Code SEGMENT 'code' assume cs:code, ds:daten 0000 B R start: mov ax,daten E D8 mov ds,ax 0005 C R 0003 mov x,0003h 000B R 04 add x,0004h 0010 EB FE stop: jmp stop 0012 Code ENDS 0000 Daten SEGMENT 'data' z dw y dw x dw Daten ENDS Bild 2.23: Die durch Übersetzung entstandenen Maschinenbefehle und Datenobjekte Jeder Datendefinitionsanweisung ist eine genau bestimmte Zahl von Bytes zugeordnet. Es sind so viele, wie durch den Typ der Variablen festgelegt ist, in diesem Fall also je zwei Bytes, die durch den Übersetzer mit 0 vorbelegt werden. Der Befehl add x,0004h wird ohne die höherwertige 0 übersetzt. Dadurch wird der Maschinenbefehl um ein Byte kürzer. Man muss aber auch dafür sorgen, dass der Prozessor beim Addieren automatisch die höherwertige 0 ergänzt. Um die Befehle und Datenobjekte eindeutig finden zu können, brauchen sie Identifikatoren. Das macht man der Reihe nach wie bei der Hausnummerierung, hier Adressierung genannt. Man adressiert den Bereich der Maschinenbefehle (Codebereich) und den der Datenobjekte (Datenbereich) jeweils für sich (Bild 2.24). Maschinenbefehle werden im Codebereich und Datenobjekte werden im Datenbereich nacheinander angeordnet und bekommen dadurch Adressen, mit denen man sie eindeutig lokalisieren kann Code SEGMENT 'code' assume cs:code, ds:daten 0000 B R start: mov ax,daten E D8 mov ds,ax 0005 C R 0003 mov x,0003h 000B R 04 add x,0004h 0010 EB FE stop: jmp stop 0012 Code ENDS 0000 Daten SEGMENT 'data' z dw y dw x dw Daten 6 Bild 2.24: Die Adressierung der Maschinenbefehle und der Datenobjekte 36

19 Ein Exkurs zur Veranschaulichung der Assemblersprache und des Programmablaufs In den beiden Maschinenbefehlen wird auf die Variable x mit dem Wert 0004 verwiesen. Durch die Adressierung in Bild 2.24 erkennt man den Sinn: es ist die Adresse im Datenbereich, die auf das Datenobjekt verweist, das x realisiert ist also ein Zeiger (oder Index oder Pointer) auf das Datenobjekt. Eine Adresse ist die Zahl der Bytes vom Anfang des Bereiches bis zum jeweils ersten Byte eines Maschinenbefehls oder eines Datenobjektes (Bild 2.25). Die Adressen geben den Abstand des ersten Byte eines Maschinenbefehls bzw. eines Datenobjektes vom jeweiligen Bereichsanfang an Code SEGMENT 'code' assume cs:code, ds:daten 0000 B R start: mov ax,daten E D8 mov ds,ax 0005 C R 0003 mov x,0003h 000B R 04 add x,0004h 0010 EB FE stop: jmp stop 0012 Code ENDS 0000 Daten SEGMENT 'data' z dw 0 ;Anweisung zur Definition der Variablen z y dw 0 ;Anweisung zur Definition der Variablen y x dw 0 ;Anweisung zur Definition der Variablen x 0006 Daten ENDS Bild 2.25: Adressierung als Abstand vom Bereichsanfang in Byte In diesem Fall hat eine Adresse 16 Adressbits. Man kann also nur 2 16 Adressen bilden. Die Menge der Adressen wird auch Adressierungsraum genannt. Mit 16 Adressbits kann man 64 KByte adressieren. Im vorliegenden Beispiel kann ein Bereich maximal 64KByte umfassen Code SEGMENT 'code' assume cs:code, ds:daten 0000 B R start: mov ax,daten E D8 mov ds,ax 0005 C R 0003 mov x,0003h 000B R 04 add x,0004h 0010 EB FE stop: jmp stop FFFF Code ENDS 0000 Daten SEGMENT 'data' z dw y dw x dw FFFF Daten ENDS Bild 2.26: Die Beschränkung des Adressierungsraumes bei 16 Adressbits Wenn die maximale Größe eines Codebereiches bzw. eines Datenobjektbereiches auf diese Weise beschränkt ist, muss man eine besondere Struktur vorsehen, um 37

20 Ein Exkurs zur Veranschaulichung der Assemblersprache und des Programmablaufs durch Zusammenfassung mehrerer solcher Bereiche ein größeres Programm zu erzeugen. Man macht die einzelnen Bereiche durch Anweisungen eindeutig erkennbar und nennt die dadurch entstehenden Einheiten Segmente. In Bild 2.27 entsteht das Segment mit dem Namen Code und das Segment mit dem Namen Daten. Man kann ein Programm aus mehreren Code- und Datenbereichen zusammensetzen, von denen jeder bis zu 64KByte umfassen kann. Man spricht dann auch von Segmenten. Zu ihrer Unterscheidung bekommen die Segmente eindeutige Namen Code SEGMENT 'code' assume cs:code, ds:daten 0000 B R start: mov ax,daten E D8 mov ds,ax 0005 C R 0003 mov x,0003h 000B R 04 add x,0004h 0010 EB FE stop: jmp stop 0012 Code ENDS 0000 Daten SEGMENT 'data' z dw y dw x dw Daten ENDS Bild 2.27: Code- und Datenbereich als Segmente Sobald man den Adressierungsraum deutlich vergrößert, braucht man die einzeln erkennbaren Segmente nicht mehr. Durch eine Adresse dieses Raumes ist jedes Element des Code- bzw. Datenbereiches eines heute üblichen Programms eindeutig erkennbar. In Bild 2.28 ist die Anfangsadresse des Code- und die des Datenobjektbereiches in diesem Adressraum willkürlich gewählt. Die Adressen haben 32 Bit. Mit 32 Adressbits kann man 4 GigaByte adressieren. Jedes Byte aus der Bytefolge, die bei der Hintereinanderordnung der Maschinenbefehle bzw. Datenobjekte eines heute bekannten Programms entsteht, ist mit einer solchen Adresse lokalisierbar angenommene Anfangsadresse des Codebereiches E D8 mov ds,ax C R 0003 mov x,0003h B R 04 add x,0004h EB FE stop: jmp stop angenommene Anfangsadresse des Datenobjektbereiches y dw x dw 0 FFFF FFFF Wegen der beschränkten Adreßräume der Segmente muss man ein großes Programm durch Zusammenfügen mehrerer Segmente bilden. Hier entfällt das. Bild 2.28: Code- und Datenbereich in einem Adressraum von 4 GigaByte 38

3 Assembler- und Maschinenbefehle, Programmablauf-Steuerung

3 Assembler- und Maschinenbefehle, Programmablauf-Steuerung 3 Assembler- und Maschinenbefehle, Programmablauf-Steuerung In der Vorlesung wurde folgendes Beispiel-Programm in der höheren Programmiersprache C vorgestellt: int x=0; int i= 0; for (i=1;i

Mehr

12. Maschinennahes Programmieren

12. Maschinennahes Programmieren 12. Maschinennahes Programmieren Der Kern jedes Computers oder jeder Microcontroller-gestützten Schaltung ist ein Prozessor: in Hochleistungsservern sind es 64-Bit-Prozessoren (z.b. vom Typ Spark oder

Mehr

Mikrocomputertechnik. Adressierungsarten

Mikrocomputertechnik. Adressierungsarten Adressierungsarten Ein Mikroprozessor bietet meist eine Reihe von Möglichkeiten, die Operanden für eine Rechenoperation zu bestimmen. Diese Möglichkeiten bezeichnet man als Adressierungsarten. unmittelbare

Mehr

INFORMATIK Oberstufe. Funktionsweise eines Rechners

INFORMATIK Oberstufe. Funktionsweise eines Rechners INFORMATIK Oberstufe Funktionsweise eines Rechners Lehrplan Inf 12.3 (ca. 17 Std.): Grundlegende Kenntnisse über den Aufbau eines Rechners und seiner prinzipiellen Funktionsweise helfen den Schülern, den

Mehr

Übungen für die Einführung in die Assemblerprogrammierung mit dem Prozessor c515c

Übungen für die Einführung in die Assemblerprogrammierung mit dem Prozessor c515c Übungen für die Einführung in die Assemblerprogrammierung mit dem Prozessor c515c 1 Transportbefehle 1.1 Verwendung nur Akku und Register (R0, R1,... R7) 1.1.1 Kopieren Sie den Wert aus Register1 nach

Mehr

Die Mikroprogrammebene eines Rechners

Die Mikroprogrammebene eines Rechners Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten, z.b. Befehl holen Befehl dekodieren Operanden holen etc.

Mehr

Im Original veränderbare Word-Dateien

Im Original veränderbare Word-Dateien Das Von-Neumann-Prinzip Prinzipien der Datenverarbeitung Fast alle modernen Computer funktionieren nach dem Von- Neumann-Prinzip. Der Erfinder dieses Konzeptes John von Neumann (1903-1957) war ein in den

Mehr

Einführung in die Computertechnik

Einführung in die Computertechnik Einführung in die Eine Einführung in Strukturprinzipien von Computern aus hardwarenaher Sicht H. Fakultät für Elektrotechnik und Informationstechnik WS 04/05 Für die Mehrzahl der Anwender sind Computer

Mehr

2. Computer (Hardware) K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16

2. Computer (Hardware) K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 2. Computer (Hardware) K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 14. Okt. 2015 Computeraufbau: nur ein Überblick Genauer: Modul Digitale Systeme (2. Semester) Jetzt: Grundverständnis

Mehr

Einführung in die technische Informatik

Einführung in die technische Informatik Einführung in die technische Informatik Christopher Kruegel chris@auto.tuwien.ac.at http://www.auto.tuwien.ac.at/~chris Betriebssysteme Aufgaben Management von Ressourcen Präsentation einer einheitlichen

Mehr

Zahlendarstellungen und Rechnerarithmetik*

Zahlendarstellungen und Rechnerarithmetik* Zahlendarstellungen und Rechnerarithmetik* 1. Darstellung positiver ganzer Zahlen 2. Darstellung negativer ganzer Zahlen 3. Brüche und Festkommazahlen 4. binäre Addition 5. binäre Subtraktion *Die Folien

Mehr

3.0 8051 Assembler und Hochsprachen

3.0 8051 Assembler und Hochsprachen 3.0 8051 Assembler und Hochsprachen Eine kurze Übersicht zum Ablauf einer Programmierung eines 8051 Mikrocontrollers. 3.1 Der 8051 Maschinencode Grundsätzlich akzeptiert ein 8051 Mikrocontroller als Befehle

Mehr

Kap 4. 4 Die Mikroprogrammebene eines Rechners

Kap 4. 4 Die Mikroprogrammebene eines Rechners 4 Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten (Befehl holen, Befehl dekodieren, Operanden holen etc.).

Mehr

Brainfuck. 1 Brainfuck. 1.1 Brainfuck Geschichte und Umfeld. 1.2 Esoterische Programmiersprachen

Brainfuck. 1 Brainfuck. 1.1 Brainfuck Geschichte und Umfeld. 1.2 Esoterische Programmiersprachen Brainfuck 1 Brainfuck 1.1 Brainfuck Geschichte und Umfeld Brainfuck ist eine sogenannte esoterische Programmiersprache. Sie wurde 1993 vom Schweizer Urban Müller entworfen mit dem Ziel, eine Sprache mit

Mehr

68000 Assembler. WAS ist ein Assembler? Ein System, das den Programmierer hilft, eine maschinennahe Programmierung zu realisieren.

68000 Assembler. WAS ist ein Assembler? Ein System, das den Programmierer hilft, eine maschinennahe Programmierung zu realisieren. WAS ist ein Assembler? Ein System, das den Programmierer hilft, eine maschinennahe Programmierung zu realisieren. Ein Programm liegt der CPU in binärer Form vor und wird durch den Assembler in einer primitiven

Mehr

B1 Stapelspeicher (stack)

B1 Stapelspeicher (stack) B1 Stapelspeicher (stack) Arbeitsweise des LIFO-Stapelspeichers Im Kapitel "Unterprogramme" wurde schon erwähnt, dass Unterprogramme einen so genannten Stapelspeicher (Kellerspeicher, Stapel, stack) benötigen

Mehr

Microcomputertechnik

Microcomputertechnik Microcomputertechnik mit Mikrocontrollern der Familie 8051 Bearbeitet von Bernd-Dieter Schaaf 2. Auflage 2002. Buch. 230 S. Hardcover ISBN 978 3 446 22089 8 Format (B x L): 16 x 22,7 cm Gewicht: 407 g

Mehr

L3. Datenmanipulation

L3. Datenmanipulation L Datenmanipulation Aufbau eines Computers Prozessor, Arbeitsspeicher und system Maschinensprachen und Maschinenbefehle Beispiel einer vereinfachten Maschinensprache Ausführung des Programms und Befehlszyklus

Mehr

Enterprise Computing Einführung in das Betriebssystem z/os. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth WS2012/13

Enterprise Computing Einführung in das Betriebssystem z/os. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth WS2012/13 UNIVERSITÄT LEIPZIG Enterprise Computing Einführung in das Betriebssystem z/os Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth WS2012/13 Verarbeitungsgrundlagen Teil 2 Virtual Storage el0100 copyright

Mehr

1.7 Assembler Programmierung

1.7 Assembler Programmierung 1.7 Assembler Programmierung Die nach außen sichtbare Programmierschnittstelle eines Prozessors ist der Befehlscode. Dies ist eine binäre Dateninformation, die vom Prozessor Byte für Byte abgearbeitet

Mehr

Technische Informatik. Der VON NEUMANN Computer

Technische Informatik. Der VON NEUMANN Computer Technische Informatik Der VON NEUMANN Computer Inhalt! Prinzipieller Aufbau! Schaltkreise! Schaltnetze und Schaltwerke! Rechenwerk! Arbeitsspeicher! Steuerwerk - Programmausführung! Periphere Geräte! Abstraktionsstufen

Mehr

Im Falle der Neueingabe müssen Sie in dem nachfolgendem Formular die Datenquelle auswählen und die Art der Prüfung festlegen.

Im Falle der Neueingabe müssen Sie in dem nachfolgendem Formular die Datenquelle auswählen und die Art der Prüfung festlegen. Ereignismanager Ereignismanager Ereignismanager - Grundsätzliches Allgemeines Mit Hilfe des Ereignismanagers können Sie Feldeingaben (bei Neueingaben oder Änderungen) überprüfen lassen. Sie können für

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

Mehr

Mikroprozessor bzw. CPU (Central Processing. - Steuerwerk (Control Unit) - Rechenwerk bzw. ALU (Arithmetic Logic Unit)

Mikroprozessor bzw. CPU (Central Processing. - Steuerwerk (Control Unit) - Rechenwerk bzw. ALU (Arithmetic Logic Unit) Der Demo-Computer besitzt einen 4Bit-Mikroprozessor. Er kann entsprechend Wörter mit einer Breite von 4 Bits in einem Schritt verarbeiten. Die einzelnen Schritte der Abarbeitung werden durch Lampen visualisiert.

Mehr

2.2 Rechnerorganisation: Aufbau und Funktionsweise

2.2 Rechnerorganisation: Aufbau und Funktionsweise 2.2 Rechnerorganisation: Aufbau und Funktionsweise é Hardware, Software und Firmware é grober Aufbau eines von-neumann-rechners é Arbeitsspeicher, Speicherzelle, Bit, Byte é Prozessor é grobe Arbeitsweise

Mehr

Prozessor HC680 fiktiv

Prozessor HC680 fiktiv Prozessor HC680 fiktiv Dokumentation der Simulation Die Simulation umfasst die Struktur und Funktionalität des Prozessors und wichtiger Baugruppen des Systems. Dabei werden in einem Simulationsfenster

Mehr

TECHNISCHE HOCHSCHULE NÜRNBERG GEORG SIMON OHM Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten, z.b. Befehl

Mehr

Binär- und Hexadezimal-Zahl Arithmetik.

Binär- und Hexadezimal-Zahl Arithmetik. Binär- und Hexadezimal-Zahl Arithmetik. Prof. Dr. Dörte Haftendorn, MuPAD 4, http://haftendorn.uni-lueneburg.de Aug.06 Automatische Übersetzung aus MuPAD 3.11, 24.04.02 Version vom 12.10.05 Web: http://haftendorn.uni-lueneburg.de

Mehr

Technische Informatik I. Übung 3 Speicherhierarchie. v t d 0 d 1 d 2 d 3 0 1 2 3. Technische Informatik I Übung 3. Technische Informatik I Übung 3

Technische Informatik I. Übung 3 Speicherhierarchie. v t d 0 d 1 d 2 d 3 0 1 2 3. Technische Informatik I Übung 3. Technische Informatik I Übung 3 Institut für Kommunikationsnetze und Rechnersysteme Technische Informatik I Paul J. Kühn, Matthias Meyer Übung 3 Speicherhierarchie Inhaltsübersicht Aufgabe 3.1 Daten-Cache Aufgabe 3.2 Virtueller Speicher

Mehr

Fehlerkorrektur Bild 3.190 Demoprozessor

Fehlerkorrektur Bild 3.190 Demoprozessor 7 Prozessor 3 0 Flags C V N Z A IP 0 SP AB 8 MS W/R DB 4 00h..6Fh Daten Speicher 70h..70h PA 71h..71h PB 72h..73h PC 74h..76h PD 80h..FFh Programm Speicher Fehlerkorrektur Bild 3.190 Demoprozessor Die

Mehr

3 Rechnen und Schaltnetze

3 Rechnen und Schaltnetze 3 Rechnen und Schaltnetze Arithmetik, Logik, Register Taschenrechner rste Prozessoren (z.b. Intel 4004) waren für reine Rechenaufgaben ausgelegt 4 4-Bit Register 4-Bit Datenbus 4 Kbyte Speicher 60000 Befehle/s

Mehr

Programmiersprachen Einführung in C

Programmiersprachen Einführung in C Programmiersprachen Einführung in C Teil 1: Von der Maschinensprache zu C Prof. Dr. Maschinensprache: MIPS R2000 Was bewirkt folgendes Programm: 00100111101111011111111111100000 10101111101111110000000000010100

Mehr

Entwurf von Algorithmen - Kontrollstrukturen

Entwurf von Algorithmen - Kontrollstrukturen Entwurf von Algorithmen - Kontrollstrukturen Eine wichtige Phase in der Entwicklung von Computerprogrammen ist der Entwurf von Algorithmen. Dieser Arbeitsschritt vor dem Schreiben des Programmes in einer

Mehr

KREDITVERZEICHNIS Konfiguration Ausgabe: 20.02.13 1/13. Dokumentation KREDITVERZEICHNIS. Teil 2. Konfiguration

KREDITVERZEICHNIS Konfiguration Ausgabe: 20.02.13 1/13. Dokumentation KREDITVERZEICHNIS. Teil 2. Konfiguration KREDITVERZEICHNIS Konfiguration Ausgabe: 20.02.13 1/13 Dokumentation KREDITVERZEICHNIS Teil 2 Konfiguration Stand 20.02.2013 KREDITVERZEICHNIS Konfiguration Ausgabe: 20.02.13 2/13 Inhalt 1. KONFIGURATION...

Mehr

Hochschule Augsburg. Herzlich willkommen! 26.11.2015 Hochschule Augsburg / Fakultät Elektrotechnik, Prof. F. Haunstetter 1

Hochschule Augsburg. Herzlich willkommen! 26.11.2015 Hochschule Augsburg / Fakultät Elektrotechnik, Prof. F. Haunstetter 1 Hochschule Augsburg Herzlich willkommen! 26.11.2015 Hochschule Augsburg / Fakultät Elektrotechnik, Prof. F. Haunstetter 1 Zeitplan Zeit Aktion 14.00 Warm Up (R. H3.14) 14.15 Zielvorstellung / Projektaufgabe

Mehr

Übung -- d001_7-segmentanzeige

Übung -- d001_7-segmentanzeige Übung -- d001_7-segmentanzeige Übersicht: Der Steuerungsablauf für die Anzeige der Ziffern 0 bis 9 mittels einer 7-Segmentanzeige soll mit einer speicherprogrammierbaren Steuerung realisiert werden. Lehrziele:

Mehr

Grundlagen der Programmiersprache C++

Grundlagen der Programmiersprache C++ / TU Braunschweig Grundlagen der Programmiersprache C++ Um den Studierenden den Einstieg in die FE-Programmierung zu erleichtern werden die wesentlichen Elemente eines C-Programmes beschrieben, soweit

Mehr

Der Toy Rechner Ein einfacher Mikrorechner

Der Toy Rechner Ein einfacher Mikrorechner Der Toy Rechner Ein einfacher Mikrorechner Dr. Gerald Heim Haid-und-Neu-Str. 10-14 76131 Karlsruhe 16. Mai 1995 Allgemeine Informationen 2 Quelle: Phil Kopmann, Microcoded versus Hard-Wired Logic, Byte

Mehr

Teil 1: Prozessorstrukturen

Teil 1: Prozessorstrukturen Teil 1: Prozessorstrukturen Inhalt: Mikroprogrammierung Assemblerprogrammierung Motorola 6809: ein einfacher 8-Bit Mikroprozessor Mikrocontroller Koprozessoren CISC- und RISC-Prozessoren Intel Pentium

Mehr

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik-

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik- Informatik Studiengang Chemische Technologie Michael Roth michael.roth@h-da.de Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013 Inhalt Teil VII Einstieg in Java I Michael Roth (h_da) Informatik

Mehr

2. Programmierung in C

2. Programmierung in C 2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)

Mehr

J. Prof. Dr.-Ing. Georg Frey Juniorprofessur Agentenbasierte Automatisierung. Laborunterlagen zum Themengebiet Steuerungstechnik. zusammengestellt von

J. Prof. Dr.-Ing. Georg Frey Juniorprofessur Agentenbasierte Automatisierung. Laborunterlagen zum Themengebiet Steuerungstechnik. zusammengestellt von J. Prof. Dr.-Ing. Georg Frey Juniorprofessur Agentenbasierte Automatisierung Laborunterlagen zum Themengebiet Steuerungstechnik zusammengestellt von Georg Frey und Stéphane Klein Modul 3 Simatic STEP7

Mehr

Technische Informatik 1

Technische Informatik 1 Technische Informatik 1 2 Instruktionssatz Lothar Thiele Computer Engineering and Networks Laboratory Instruktionsverarbeitung 2 2 Übersetzung Das Kapitel 2 der Vorlesung setzt sich mit der Maschinensprache

Mehr

Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe

Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Was sind Operatoren? Ein Operator ist eine in die Programmiersprache eingebaute Funktion,

Mehr

Einführung (0) Erster funktionsfähiger programmgesteuerter Rechenautomat Z3, fertiggestellt 1941 Bild: Nachbau im Deutschen Museum München

Einführung (0) Erster funktionsfähiger programmgesteuerter Rechenautomat Z3, fertiggestellt 1941 Bild: Nachbau im Deutschen Museum München Einführung (0) Erster funktionsfähiger programmgesteuerter Rechenautomat Z3, fertiggestellt 1941 Bild: Nachbau im Deutschen Museum München Einführung (1) Was ist ein Rechner? Maschine, die Probleme für

Mehr

Automatisches Parallelisieren

Automatisches Parallelisieren Automatisches Parallelisieren Vorlesung im Wintersemester 2010/11 Eberhard Zehendner FSU Jena Thema: Datenabhängigkeitsanalyse Eberhard Zehendner (FSU Jena) Automatisches Parallelisieren Datenabhängigkeitsanalyse

Mehr

C:\WINNT\System32 ist der Pfad der zur Datei calc.exe führt. Diese Datei enthält das Rechner - Programm. Klicke jetzt auf Abbrechen.

C:\WINNT\System32 ist der Pfad der zur Datei calc.exe führt. Diese Datei enthält das Rechner - Programm. Klicke jetzt auf Abbrechen. . Das Programm- Icon Auf dem Desktop deines Computers siehst du Symbolbildchen (Icons), z.b. das Icon des Programms Rechner : Klicke mit der rechten Maustaste auf das Icon: Du siehst dann folgendes Bild:

Mehr

Grundlagen der Rechnerarchitektur

Grundlagen der Rechnerarchitektur Grundlagen der Rechnerarchitektur Einführung Unsere erste Amtshandlung: Wir schrauben einen Rechner auf Grundlagen der Rechnerarchitektur Einführung 2 Vorlesungsinhalte Binäre Arithmetik MIPS Assembler

Mehr

Zahlensysteme. Digitale Rechner speichern Daten im Dualsystem 435 dez = 1100110011 binär

Zahlensysteme. Digitale Rechner speichern Daten im Dualsystem 435 dez = 1100110011 binär Zahlensysteme Menschen nutzen zur Angabe von Werten und zum Rechnen vorzugsweise das Dezimalsystem Beispiel 435 Fische aus dem Teich gefischt, d.h. 4 10 2 + 3 10 1 +5 10 0 Digitale Rechner speichern Daten

Mehr

Name: ES2 Klausur Thema: ARM 25.6.07. Name: Punkte: Note:

Name: ES2 Klausur Thema: ARM 25.6.07. Name: Punkte: Note: Name: Punkte: Note: Hinweise für das Lösen der Aufgaben: Zeit: 95 min. Name nicht vergessen! Geben Sie alle Blätter ab. Die Reihenfolge der Aufgaben ist unabhängig vom Schwierigkeitsgrad. Erlaubte Hilfsmittel

Mehr

1. Übung - Einführung/Rechnerarchitektur

1. Übung - Einführung/Rechnerarchitektur 1. Übung - Einführung/Rechnerarchitektur Informatik I für Verkehrsingenieure Aufgaben inkl. Beispiellösungen 1. Aufgabe: Was ist Hard- bzw. Software? a Computermaus b Betriebssystem c Drucker d Internetbrowser

Mehr

Wie arbeiten Computer?

Wie arbeiten Computer? Autor: Ortmann, Jürgen. Titel: Wie arbeiten Computer? Quelle: Einführung in die PC-Grundlagen. München, 8. Auflage, 2003. S. 29-41. Verlag: Addison-Wesley Verlag. Die Veröffentlichung erfolgt mit freunlicher

Mehr

VBA-Programmierung: Zusammenfassung

VBA-Programmierung: Zusammenfassung VBA-Programmierung: Zusammenfassung Programmiersprachen (Definition, Einordnung VBA) Softwareentwicklung-Phasen: 1. Spezifikation 2. Entwurf 3. Implementierung Datentypen (einfach, zusammengesetzt) Programmablaufsteuerung

Mehr

TIMI: Technische Informatik für Medieninformatiker

TIMI: Technische Informatik für Medieninformatiker TIMI: Technische Informatik für Medieninformatiker Bachelor-Studiengang Digitale Medien Medieninformatik SS 2004 Niels Pollem Arbeitsgruppe Rechnernetze (Prof. Dr.-Ing. Ute Bormann) Scheduling:

Mehr

Anleitung für zwei C++ - Openmp - Beispiele auf der NWZSuperdome

Anleitung für zwei C++ - Openmp - Beispiele auf der NWZSuperdome Anleitung für zwei C++ - Openmp - Beispiele auf der NWZSuperdome (Timo Heinrich, t_hein03@uni-muenster.de) Inhaltsverzeichnis: 0.Einleitung 1.Teil: Helloworldprogramm 1.1 Quellcode: Helloworld.cpp 1.2

Mehr

Teil VIII Von Neumann Rechner 1

Teil VIII Von Neumann Rechner 1 Teil VIII Von Neumann Rechner 1 Grundlegende Architektur Zentraleinheit: Central Processing Unit (CPU) Ausführen von Befehlen und Ablaufsteuerung Speicher: Memory Ablage von Daten und Programmen Read Only

Mehr

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten

Mehr

Besprechung des 3. Übungsblattes MIMA-Interpreter MIMA-Aufgabe: Primzahltest Weitere MIMA-Aufgaben online

Besprechung des 3. Übungsblattes MIMA-Interpreter MIMA-Aufgabe: Primzahltest Weitere MIMA-Aufgaben online Themen heute Besprechung des 3. Übungsblattes MIMA-Interpreter MIMA-Aufgabe: Primzahltest Weitere MIMA-Aufgaben online Besprechung des 3. Übungsblattes Aufgabe 3 Speicherplätze für Mikrocode-Anweisungen

Mehr

OPERATIONEN AUF EINER DATENBANK

OPERATIONEN AUF EINER DATENBANK Einführung 1 OPERATIONEN AUF EINER DATENBANK Ein Benutzer stellt eine Anfrage: Die Benutzer einer Datenbank können meist sowohl interaktiv als auch über Anwendungen Anfragen an eine Datenbank stellen:

Mehr

CdsComXL. Excel add-in für Bearbeitung und Auswertung der CDS-daten. ComXL-020/D, 0102. Spur 9 014.700. Spur 7 014.680. Spur 5 014.660. Spur 3 014.

CdsComXL. Excel add-in für Bearbeitung und Auswertung der CDS-daten. ComXL-020/D, 0102. Spur 9 014.700. Spur 7 014.680. Spur 5 014.660. Spur 3 014. Excel add-in für Bearbeitung und Auswertung der CDS-daten CdsComXL 100 50 0 Spur 9 014.700 Spur 7 014.680 014.660 014.640 Spur 3 Spur 5 014.620 Spur 1 014.600 ComXL-020/D, 0102 Inhaltsverzeichnis 1. Installation----------------------------------------------------------------------------------------------------

Mehr

PHP 5.4 ISBN 978-3-86249-327-2. Stephan Heller, Andreas Dittfurth 1. Ausgabe, September 2012. Grundlagen zur Erstellung dynamischer Webseiten GPHP54

PHP 5.4 ISBN 978-3-86249-327-2. Stephan Heller, Andreas Dittfurth 1. Ausgabe, September 2012. Grundlagen zur Erstellung dynamischer Webseiten GPHP54 PHP 5.4 Stephan Heller, Andreas Dittfurth 1. Ausgabe, September 2012 Grundlagen zur Erstellung dynamischer Webseiten ISBN 978-3-86249-327-2 GPHP54 5 PHP 5.4 - Grundlagen zur Erstellung dynamischer Webseiten

Mehr

Einführung in Automation Studio

Einführung in Automation Studio Einführung in Automation Studio Übungsziel: Der links abgebildete Stromlaufplan soll mit einer SPS realisiert werden und mit Automation Studio programmiert werden. Es soll ein Softwareobjekt Logik_1 in

Mehr

Deklarationen in C. Prof. Dr. Margarita Esponda

Deklarationen in C. Prof. Dr. Margarita Esponda Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.

Mehr

Ergänzungen zum Manual OS V 2.05/2.06

Ergänzungen zum Manual OS V 2.05/2.06 Ergänzungen zum Manual OS V 2.05/2.06 SYSTEMRESOURCEN - PROGRAMM DOWNLOAD - Ab der Betriebssystemversion 2.05 haben die C-Control Units M-2.0 und Station 2.0 die Möglichkeit das Anwenderprogramm von einem

Mehr

2 Einfache Rechnungen

2 Einfache Rechnungen 2 Einfache Rechnungen 2.1 Zahlen Computer, auch bekannt als Rechner, sind sinnvoller eingesetzt, wenn sie nicht nur feste Texte ausgeben, sondern eben auch rechnen. Um das Rechnen mit Zahlen zu verstehen,

Mehr

C. BABBAGE (1792 1871): Programmgesteuerter (mechanischer) Rechner

C. BABBAGE (1792 1871): Programmgesteuerter (mechanischer) Rechner Von-Neumann-Rechner (John von Neumann : 1903-1957) C. BABBAGE (1792 1871): Programmgesteuerter (mechanischer) Rechner Quelle: http://www.cs.uakron.edu/~margush/465/01_intro.html Analytical Engine - Calculate

Mehr

Kapitel 2. Zahlensysteme, Darstellung von Informationen

Kapitel 2. Zahlensysteme, Darstellung von Informationen Kapitel 2 Zahlensysteme, Darstellung von Informationen 1 , Darstellung von Informationen Ein Computer speichert und verarbeitet mehr oder weniger große Informationsmengen, je nach Anwendung und Leistungsfähigkeit.

Mehr

Assembler - Adressierungsarten

Assembler - Adressierungsarten Assembler - Adressierungsarten Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler - Adressierungsarten 1/31 2008-04-01

Mehr

SC18IM700-Tester v1.0. 1. Einleitung

SC18IM700-Tester v1.0. 1. Einleitung SC18IM700-Tester v1.0 1. Einleitung Der SC18IM700-Tester ist ein mittels Visual Studio.NET und in der Programmiersprache C# entwickeltes Programm. Es lehnt sich an der Funktion eines einfachen Terminal-

Mehr

Übungscomputer mit Prozessor 8085 - Bedienungsanleitung

Übungscomputer mit Prozessor 8085 - Bedienungsanleitung Seite 1 von 9 Pinbelegung der Steckerleisten im Übungsgerät Seite 2 von 9 Inbetriebnahme: Schalter S1, S2, und S3 in Stellung 1 (oben) schalten. Spannung 5 V anlegen. ACHTUNG auf Polarität achten. Taste

Mehr

Kapitel 1: Einführung

Kapitel 1: Einführung 10 Kapitel 1: Einführung 1.1 Was ist eine Programmiersprache? 1.2 Details zu C++ 1.3 Phasen der Programmierung 1.4 Ein erstes Programm: Hello World! 1.5 Addition zweier Zahlen 1.6 Entscheidungen 1.1 Was

Mehr

Zähler- und Zeitgeber-Baugruppen

Zähler- und Zeitgeber-Baugruppen Zähler- und Zeitgeber-Baugruppen Sinn: häufig müssen Zeitbedingungen eingehalten werden z.b.: einige ms warten, Häufigkeit von Ereignissen zählen etc... Lösung: 1.) Zeitschleifen = Programm abarbeiten,

Mehr

Technische Informatik - Eine Einführung

Technische Informatik - Eine Einführung Martin-Luther-Universität Halle-Wittenberg Fachbereich Mathematik und Informatik Lehrstuhl für Technische Informatik Prof. P. Molitor Ausgabe: 2005-02-21 Abgabe: 2005-02-21 Technische Informatik - Eine

Mehr

Numerische Datentypen. Simon Weidmann

Numerische Datentypen. Simon Weidmann Numerische Datentypen Simon Weidmann 08.05.2014 1 Ganzzahlige Typen 1.1 Generelles Bei Datentypen muss man immer zwei elementare Eigenschaften unterscheiden: Zuerst gibt es den Wertebereich, zweitens die

Mehr

Funktionaler Aufbau eines Computers Untersuchung von Delphi-Compilaten

Funktionaler Aufbau eines Computers Untersuchung von Delphi-Compilaten Funktionaler Aufbau eines Computers Im Folgenden soll der Weg untersucht werden, wie ein Programm, das von einem Compiler/Interpreter in Maschinencode übertragen wurde, schließlich vom Prozessor abgearbeitet

Mehr

Zahlensysteme Seite -1- Zahlensysteme

Zahlensysteme Seite -1- Zahlensysteme Zahlensysteme Seite -- Zahlensysteme Inhaltsverzeichnis Dezimalsystem... Binärsystem... Umrechnen Bin Dez...2 Umrechnung Dez Bin...2 Rechnen im Binärsystem Addition...3 Die negativen ganzen Zahlen im Binärsystem...4

Mehr

Wir basteln einen Jahreskalender mit MS Excel.

Wir basteln einen Jahreskalender mit MS Excel. Wir basteln einen Jahreskalender mit MS Excel. In meinen Seminaren werde ich hin und wieder nach einem Excel-Jahreskalender gefragt. Im Internet findet man natürlich eine ganze Reihe mehr oder weniger

Mehr

Programmierkurs: Delphi: Einstieg

Programmierkurs: Delphi: Einstieg Seite 1 von 6 Programmierkurs: Delphi: Einstieg Aus Wikibooks Inhaltsverzeichnis 1 Einstieg Einstieg Was ist Delphi Borland Delphi ist eine RAD-Programmierumgebung von Borland. Sie basiert auf der Programmiersprache

Mehr

x86 Assembler Praktische Einführung Sebastian Lackner Michael Müller 3. Juni 2013

x86 Assembler Praktische Einführung Sebastian Lackner Michael Müller 3. Juni 2013 x86 Assembler Praktische Einführung Sebastian Lackner Michael Müller 3. Juni 2013 1 / 53 Inhaltsverzeichnis 1 Einführung 2 Assembler Syntax, Register und Flags 3 Hauptspeicher 4 Stack 5 Assemblerbefehle

Mehr

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH Java Einleitung - Handout Kurzbeschreibung: Eine kleine Einführung in die Programmierung mit Java. Dokument: Autor: Michael Spahn Version 1.0 Status: Final Datum: 23.10.2012 Vertraulichkeit: öffentlich

Mehr

Übersicht. UNIX-Dateisystem (ext2) Super-User unter Linux werden MSDOS: FAT16 und FAT32

Übersicht. UNIX-Dateisystem (ext2) Super-User unter Linux werden MSDOS: FAT16 und FAT32 Übersicht UNIX-Dateisystem (ext2) Super-User unter Linux werden MSDOS: FAT16 und FAT32 Die in diesem Teil vorgestellten Informationen stellen lediglich das Prinzip dar - im Detail ist alles etwas komplizierter...

Mehr

Zahlensysteme: Oktal- und Hexadezimalsystem

Zahlensysteme: Oktal- und Hexadezimalsystem 20 Brückenkurs Die gebräuchlichste Bitfolge umfasst 8 Bits, sie deckt also 2 8 =256 Möglichkeiten ab, und wird ein Byte genannt. Zwei Bytes, also 16 Bits, bilden ein Wort, und 4 Bytes, also 32 Bits, formen

Mehr

Programmierparadigmen. Programmierparadigmen. Imperatives vs. objektorientiertes Programmieren. Programmierparadigmen. Agenda für heute, 4.

Programmierparadigmen. Programmierparadigmen. Imperatives vs. objektorientiertes Programmieren. Programmierparadigmen. Agenda für heute, 4. Agenda für heute, 4. Mai, 2006 Programmierparadigmen Imperative Programmiersprachen In Prozeduren zusammengefasste, sequentiell ausgeführte Anweisungen Die Prozeduren werden ausgeführt, wenn sie als Teil

Mehr

Webseitennavigation mit dem Content-Management-System Imperia. Zentrum für Informationsverarbeitung Westfälische Wilhelms-Universität Münster

Webseitennavigation mit dem Content-Management-System Imperia. Zentrum für Informationsverarbeitung Westfälische Wilhelms-Universität Münster Webseitennavigation mit dem Content-Management-System Imperia Zentrum für Informationsverarbeitung Westfälische Wilhelms-Universität Münster 10. Januar 2006 Inhaltsverzeichnis 1. Einführung 4 2. Rubrikenstruktur

Mehr

5.BMaschinensprache und Assembler

5.BMaschinensprache und Assembler Die Maschinenprogrammebene eines Rechners Jörg Roth 268 5.BMaschinensprache und Assembler Die vom Prozessor ausführbaren Befehle liegen im Binärformat vor. Nur solche Befehle sind direkt ausführbar. So

Mehr

Anlegen eines Speicherbereichs mit DB, DW eleganter in Kombination mit EQU, Timer-Interrupt

Anlegen eines Speicherbereichs mit DB, DW eleganter in Kombination mit EQU, Timer-Interrupt Anlegen eines Speicherbereichs mit DB, DW eleganter in Kombination mit EQU, Timer-Interrupt AMPEL-Steuerung(en) Die Beschreibung und Programmierung der Ampel (vor allem Ampel_5) können sehr kompliziert

Mehr

Assembler DOS (Beta 1) Copyright 2000 Thomas Peschko. Assembler II - DOS. ASSEMBLER Arbeiten mit Dateien und Daten.

Assembler DOS (Beta 1) Copyright 2000 Thomas Peschko. Assembler II - DOS. ASSEMBLER Arbeiten mit Dateien und Daten. Assembler II - DOS ASSEMBLER Arbeiten mit Dateien und Daten peschko@aol.com 1 Wer nun den Eindruck hat, dass unsere Programme hauptsächlich nur Unterprogramme vor ihren Karren spannen und sich darauf beschränken

Mehr

Mikroprozessor als universeller digitaler Baustein

Mikroprozessor als universeller digitaler Baustein 2. Mikroprozessor 2.1 Allgemeines Mikroprozessor als universeller digitaler Baustein Die zunehmende Integrationsdichte von elektronischen Schaltkreisen führt zwangsläufige zur Entwicklung eines universellen

Mehr

IT- Handbuch für Fachinformatiker, 7. Auflage: Text- Lösungen Sascha Kersken

IT- Handbuch für Fachinformatiker, 7. Auflage: Text- Lösungen Sascha Kersken IT- Handbuch für Fachinformatiker, 7. Auflage: Text- Lösungen Sascha Kersken Im Folgenden finden Sie jeweils die korrekte Antwort zu den im Buch abgedruckten Prüfungsfragen, soweit die Antworten in Textform

Mehr

GI Vektoren

GI Vektoren Vektoren Problem: Beispiel: viele Variablen vom gleichen Typ abspeichern Text ( = viele char-variablen), Ergebnisse einer Meßreihe ( = viele int-variablen) hierfür: Vektoren ( = Arrays = Feld ) = Ansammlung

Mehr

Rechnernutzung in der Physik. Betriebssysteme

Rechnernutzung in der Physik. Betriebssysteme Rechnernutzung in der Physik Betriebssysteme 1 Betriebssysteme Anwendungsprogramme Betriebssystem Treiber BIOS Direkter Zugriff von Anwenderprogrammen auf Hardware nur in Ausnahmefällen sinnvoll / möglich:

Mehr

Repräsentation von Daten: Binär-, Oktal- u. Hexadezimalcodierung von ganzen und rationalen Zahlen

Repräsentation von Daten: Binär-, Oktal- u. Hexadezimalcodierung von ganzen und rationalen Zahlen Großübung 1: Zahlensysteme Repräsentation von Daten: Binär-, Oktal- u. Hexadezimalcodierung von ganzen und rationalen Zahlen Lehrender: Dr. Klaus Richter, Institut für Informatik; E-Mail: richter@informatik.tu-freiberg.de

Mehr

Alle Speicherplatinen können als Programm- bzw. Arbeitsspeicher

Alle Speicherplatinen können als Programm- bzw. Arbeitsspeicher -1-1. Überblick Das System.009 umfaßt programmierbare binäre Steuereinrichtungen für den industriellen Einsatz. Charakteristisch ist, daß die BOOLEschen Gleichungen, die den konkreten Steueralgorithmus

Mehr

3 GRAFIKEN, BILDER, ZEICHNUNGSOBJEKTE

3 GRAFIKEN, BILDER, ZEICHNUNGSOBJEKTE 3 GRAFIKEN, BILDER, ZEICHNUNGSOBJEKTE Grafiken, Bilder und Zeichnungsobjekte können in einer Präsentation mehrere Funktionen haben: Sie können eine Präsentation anschaulicher machen, können das Vorgeführte

Mehr

Einheit Variablen in der Programmiersprache C Variablen-Modell, Variablen-Vereinbarungen

Einheit Variablen in der Programmiersprache C Variablen-Modell, Variablen-Vereinbarungen Einheit Variablen in der Programmiersprache C Variablen-Modell, Variablen-Vereinbarungen Kurs C/C++ Programmierung, WS 2008/2009 Dipl.Inform. R. Spurk Arbeitsgruppe Programmierung FR 6.2 Informatik R.

Mehr

Filterregeln... 1. Einführung... 1. Migration der bestehenden Filterregeln...1. Alle eingehenden Nachrichten weiterleiten...2

Filterregeln... 1. Einführung... 1. Migration der bestehenden Filterregeln...1. Alle eingehenden Nachrichten weiterleiten...2 Jörg Kapelle 15:19:08 Filterregeln Inhaltsverzeichnis Filterregeln... 1 Einführung... 1 Migration der bestehenden Filterregeln...1 Alle eingehenden Nachrichten weiterleiten...2 Abwesenheitsbenachrichtigung...2

Mehr

Das Prinzip an einem alltäglichen Beispiel

Das Prinzip an einem alltäglichen Beispiel 3.2 Pipelining Ziel: Performanzsteigerung é Prinzip der Fließbandverarbeitung é Probleme bei Fließbandverarbeitung BB TI I 3.2/1 Das Prinzip an einem alltäglichen Beispiel é Sie kommen aus dem Urlaub und

Mehr

Codierungstheorie Rudolf Scharlau, SoSe 2006 9

Codierungstheorie Rudolf Scharlau, SoSe 2006 9 Codierungstheorie Rudolf Scharlau, SoSe 2006 9 2 Optimale Codes Optimalität bezieht sich auf eine gegebene Quelle, d.h. eine Wahrscheinlichkeitsverteilung auf den Symbolen s 1,..., s q des Quellalphabets

Mehr

05. Assembler-Programmierung. Datenstrukturen des ATMega32. Literatur

05. Assembler-Programmierung. Datenstrukturen des ATMega32. Literatur 0. Assembler-Programmierung Datenstrukturen des ATMega32 Literatur mikrocontroller.net avr-asm-tutorial.net asm Alles über AVR AVR-Assembler-Einführung Assembler AVR-Aufbau, Register, Befehle 2008: ouravr.com/attachment/microschematic/index.swf

Mehr

RÖK Typo3 Dokumentation

RÖK Typo3 Dokumentation 2012 RÖK Typo3 Dokumentation Redakteur Sparten Eine Hilfe für den Einstieg in Typo3. Innpuls Werbeagentur GmbH 01.01.2012 2 RÖK Typo3 Dokumentation Inhalt 1) Was ist Typo3... 3 2) Typo3 aufrufen und Anmelden...

Mehr