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

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

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

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

Ü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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ü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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Kapitel 3. Mein erstes C-Programm

Kapitel 3. Mein erstes C-Programm Kapitel 3 Mein erstes C-Programm 1 Gliederung Kapitel 3 Mein erstes C-Programm 3.1 Einleitung 3.2 Mein erstes C-Programm 3.3 Zusammenfassung 2 Problem Algorithmus Mittelwert für Messwerte berechnen DGL

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

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

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

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

Unterprogramme, Pointer und die Übergabe von Arrays

Unterprogramme, Pointer und die Übergabe von Arrays Unterprogramme, Pointer und die Übergabe von Arrays Unterprogramme Wie schon im Abschnitt über Funktionen erwähnt, versteht man unter einem Unterprogramm im engeren Sinn eine Prozedur, welche die Werte

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

a. Flipflop (taktflankengesteuert) Wdh. Signalverläufe beim D-FF

a. Flipflop (taktflankengesteuert) Wdh. Signalverläufe beim D-FF ITS Teil 2: Rechnerarchitektur 1. Grundschaltungen der Digitaltechnik a. Flipflop (taktflankengesteuert) Wdh. Signalverläufe beim D-FF b. Zähler (Bsp. 4-Bit Zähler) - Eingang count wird zum Aktivieren

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

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

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

Arbeiten mit Arrays. 4.1 Eigenschaften. 4.1.1 Schlüssel und Element. Kapitel 4

Arbeiten mit Arrays. 4.1 Eigenschaften. 4.1.1 Schlüssel und Element. Kapitel 4 Arbeiten mit s Eine effiziente Programmierung mit PHP ohne seine s ist kaum vorstellbar. Diese Datenstruktur muss man verstanden haben, sonst brauchen wir mit weitergehenden Programmiertechniken wie der

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

Ü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

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

Rechnerorganisation 2 TOY. Karl C. Posch. co1.ro_2003. Karl.Posch@iaik.tugraz.at 16.03.2011

Rechnerorganisation 2 TOY. Karl C. Posch. co1.ro_2003. Karl.Posch@iaik.tugraz.at 16.03.2011 Technische Universität Graz Institut tfür Angewandte Informationsverarbeitung und Kommunikationstechnologie Rechnerorganisation 2 TOY Karl C. Posch Karl.Posch@iaik.tugraz.at co1.ro_2003. 1 Ausblick. Erste

Mehr

Die Programmiersprache C

Die Programmiersprache C Die Programmiersprache C höhere Programmiersprache (mit einigen Assembler-ähnlichen Konstrukten) gut verständliche Kommandos muss von Compiler in maschinenlesbaren Code (Binärdatei) übersetzt werden universell,

Mehr

Mod_com.lib. Inhalt. WAGO-I/O-PRO 32 Bibliothek

Mod_com.lib. Inhalt. WAGO-I/O-PRO 32 Bibliothek Anhang A Weitere Bibliotheken WAGO-I/O-PRO 32 Bibliothek Mod_com.lib Inhalt ADD_DESC (Datentyp)...2 ADD_PI_INFORMATION...4 CRC16...6 FBUS_ERROR_INFORMATION...7 GET_DIGITAL_INPUT_OFFSET...8 GET_DIGITAL_OUTPUT_OFFSET...10

Mehr

L1 Programmiersprachen

L1 Programmiersprachen 1 Einführung Delphi 1.1 Wie erstelle ich eigene Software? Um spezielle Problemlösungen zu erstellen bzw. Unterstützung durch den Computer zu erfahren, bedient sich der Anwender spezifischer Softwareprogramme,

Mehr

Sucosoft S40 KOP/FBS KOP FBS

Sucosoft S40 KOP/FBS KOP FBS Sucosoft S40 KOP/FBS KOP FBS Grafische Elemente Netzwerke erstellen Netzwerke erstellen Programme werden in KOP durch grafische Elemente dargestellt. Abfrage einer Variable auf den Zustand 1 Abfrage einer

Mehr

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden. Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,

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

JMPCN Sprungbefehl nur ausführen, wenn VKE 0 ist. JMPC Sprungbefehl nur ausführen, wenn VKE 1 ist. JMP Ohne Bedingung zur Sprungmarke wechseln.

JMPCN Sprungbefehl nur ausführen, wenn VKE 0 ist. JMPC Sprungbefehl nur ausführen, wenn VKE 1 ist. JMP Ohne Bedingung zur Sprungmarke wechseln. Grafische Elemente Netzwerke erstellen Netzwerke erstellen Programme werden in KOP durch grafische Elemente dargestellt. Abfrage einer Variable auf den Zustand 1 Abfrage einer Variable auf den Zustand

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

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

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

Beim Programmieren mit MMIX habt ihr vielleicht schon öfter eine der folgenden Fehlermeldungen von MMIXAL bekommen:

Beim Programmieren mit MMIX habt ihr vielleicht schon öfter eine der folgenden Fehlermeldungen von MMIXAL bekommen: 1 ADRESSIERUNG IN MMIX Beim Programmieren mit MMIX habt ihr vielleicht schon öfter eine der folgenden Fehlermeldungen von MMIXAL bekommen: no base address is close enough to the address A! relative address

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

Computerarithmetik ( )

Computerarithmetik ( ) Anhang A Computerarithmetik ( ) A.1 Zahlendarstellung im Rechner und Computerarithmetik Prinzipiell ist die Menge der im Computer darstellbaren Zahlen endlich. Wie groß diese Menge ist, hängt von der Rechnerarchitektur

Mehr

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Inhalt dieser Einheit Variablen (Sinn und Aufgabe) Bezeichner Datentypen, Deklaration und Operationen Typenumwandlung (implizit/explizit) 2 Variablen

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

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

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

Vorlesung Rechnerarchitektur. Einführung

Vorlesung Rechnerarchitektur. Einführung Vorlesung Rechnerarchitektur Einführung Themen der Vorlesung Die Vorlesung entwickelt an Hand von zwei Beispielen wichtige Prinzipien der Prozessorarchitektur und der Speicherarchitektur: MU0 Arm Speicher

Mehr

Kapitel VI. Speicherverwaltung. Speicherverwaltung

Kapitel VI. Speicherverwaltung. Speicherverwaltung Kapitel VI Speicherverwaltung 1 Speicherverwaltung Computer exekutiert Programme (mit Daten) im Hauptspeicher. Hauptspeicher: Großes Array von Wörtern (1 oder mehrere Bytes) Jedes Wort hat eine eigene

Mehr

Klausur. Grundlagen der Datenverarbeitung/ Technische Informatik 23.9.03

Klausur. Grundlagen der Datenverarbeitung/ Technische Informatik 23.9.03 Klausur Grundlagen der Datenverarbeitung/ Technische Informatik 23.9.03 Machen Sie bitte zu Beginn der Klausur hier unten die notwendigen Angaben. Lösen Sie nicht die Heftung der Klausur. Wenn Sie die

Mehr

Virtueller Speicher. SS 2012 Grundlagen der Rechnerarchitektur Speicher 44

Virtueller Speicher. SS 2012 Grundlagen der Rechnerarchitektur Speicher 44 Virtueller Speicher SS 2012 Grundlagen der Rechnerarchitektur Speicher 44 Die Idee Virtuelle Adressen Prozess 1 Speicherblock 0 Speicherblock 1 Speicherblock 2 Speicherblock 3 Speicherblock 4 Speicherblock

Mehr

Hauptspeicherinhalt. Ton. Vektorgrafik Bitmapgrafik Digit. Video. 1. Darstellung von Daten im Rechner. Abb. 1.1: Einteilung der Daten

Hauptspeicherinhalt. Ton. Vektorgrafik Bitmapgrafik Digit. Video. 1. Darstellung von Daten im Rechner. Abb. 1.1: Einteilung der Daten Hauptspeicherinhalt Programmcode Daten numerisch logisch alphanumerisch Ton Grafik Ganze Zahlen Gleitkommazahlen Zeichen Zeichenketten vorzeichenlos mit Vorzeichen Vektorgrafik Bitmapgrafik Digit. Video

Mehr

Instruktionssatz-Architektur

Instruktionssatz-Architektur Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2005/2006 Übersicht 1 Einleitung 2 Bestandteile der ISA 3 CISC / RISC Übersicht 1 Einleitung 2 Bestandteile

Mehr

Steuern des GSR-Interface mit QBasic

Steuern des GSR-Interface mit QBasic Steuern des GSR-Interface mit QBasic Erstellt von Jochen Sendler, Geschwister-Scholl-Realschule Mannheim Inhaltsverzeichnis 1. Die Programmiersprache QBasic 3 2. Starten von QBasic 3 3. Ansteuern einzelner

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18 Kapitel 3 Datentypen und Variablen Seite 1 von 18 Datentypen - Einführung - Für jede Variable muss ein Datentyp festgelegt werden. - Hierdurch werden die Wertemenge und die verwendbaren Operatoren festgelegt.

Mehr

Betragsgleichungen und die Methode der Fallunterscheidungen

Betragsgleichungen und die Methode der Fallunterscheidungen mathe online Skripten http://www.mathe-online.at/skripten/ Betragsgleichungen und die Methode der Fallunterscheidungen Franz Embacher Fakultät für Mathematik der Universität Wien E-mail: franz.embacher@univie.ac.at

Mehr