CO - Informatik - Christoph Oberweis

Werbung
Programmierung:
Einführung
Programmausführung im Prozessor
Ein kleines Programm
Quellprogramm – Maschinenprogramm
Struktogramm und Algorithmus
Christoph Oberweis, BBSW Trier
CPU
• CPU: Central Processing Unit
• deutsch: Zentrale Prozessoreinheit
• oder kurz: Prozessor (Hardwarekomponente)
Die CPU steuert über Software andere Bestandteile des
PCs. Die grundlegende Eigenschaft des Prozessors ist
seine Programmierbarkeit. Der Prozessor führt Befehle aus.
Prozess, vergleichbare Begriffe: Ablauf, Vorgang
C.O.
2
Alles im richtigen Takt!
Ein Prozessortakt ist die Zeit für die Ausführung eines
einfachen Befehls. Für die Division und andere
komplizierter Befehle braucht der Prozessor mehrere
Takte. Eine Taktfrequenz von einem Megahertz
bedeutet, dass der Prozessor eine Million einfache
Befehle pro Sekunde ausführen kann.
Die Taktfrequenz gibt also die Arbeitsgeschwindigkeit
des Prozessors an.
Taktgeber ist ein Schwingquarz auf der Hauptplatine.
C.O.
3
Komponenten der CPU
Vereinfachte Darstellung
C.O.
4
Komponenten der CPU
Steuerwerk: interpretiert die
Befehle, steuert ihre Ausführung
C.O.
5
Komponenten der CPU
Steuerwerk: interpretiert die
Befehle, steuert ihre Ausführung
Register: kleine Spezialspeicher
für Zwischenergebnisse und
Befehle (schnellster Zugriff)
C.O.
6
Komponenten der CPU
Steuerwerk: interpretiert die
Befehle, steuert ihre Ausführung
Register: kleine Spezialspeicher
für Zwischenergebnisse und
Befehle (schnellster Zugriff)
Rechenwerk: ist für arithmetische
und logische Funktionen zuständig
C.O.
7
… und noch der Arbeitsspeicher
Steuerwerk: interpretiert die
Befehle, steuert ihre Ausführung
Register: kleine Spezialspeicher
für Zwischenergebnisse und
Befehle (schnellster Zugriff)
Rechenwerk: ist für arithmetische
und logische Funktionen zuständig
Arbeitsspeicher: hier stehen
Daten und die Programme
C.O.
8
Eingabe Verarbeitung Ausgabe
Steuerwerk: interpretiert die
Befehle, steuert ihre Ausführung
Eingabe
Register: kleine Spezialspeicher
für Zwischenergebnisse und
Befehle (schnellster Zugriff)
Verarbeitung
Rechenwerk: ist für arithmetische
und logische Funktionen zuständig
Arbeitsspeicher: hier stehen
Daten und die Programme
Ausgabe
C.O.
9
Abarbeitung eines Befehls
Vereinfachte Darstellung
C.O.
10
Befehlszyklus
1.
Holphase: Zunächst muss ein Befehl aus dem
Speicher geholt und in das Befehlsregister
geladen werden.
1
C.O.
11
Befehlszyklus
1.
Holphase: Zunächst muss ein Befehl aus dem
Speicher geholt und in das Befehlsregister
geladen werden.
2.
Dekodierphase: Das Steuerwerk untersucht
den Befehl hinsichtlich der vorzunehmenden
Arbeitsschritte, z. B. eine Addition.
2
1
C.O.
12
Befehlszyklus
1.
Holphase: Zunächst muss ein Befehl aus dem
Speicher geholt und in das Befehlsregister
geladen werden.
2.
Dekodierphase: Das Steuerwerk untersucht
den Befehl hinsichtlich der vorzunehmenden
Arbeitsschritte, z. B. eine Addition.
3
3.
Ausführungsphase: Das Rechenwerk wird
vom Steuerwerk nun angewiesen, die
gewünschte Operation mit den Daten in den
Registern durchzuführen.
2
1
C.O.
13
Befehlszyklus
1.
Holphase: Zunächst muss ein Befehl aus dem
Speicher geholt und in das Befehlsregister
geladen werden.
2.
Dekodierphase: Das Steuerwerk untersucht
den Befehl hinsichtlich der vorzunehmenden
Arbeitsschritte, z. B. eine Addition.
3
3.
4.
Ausführungsphase: Das Rechenwerk wird
vom Steuerwerk nun angewiesen, die
gewünschte Operation mit den Daten in den
Registern durchzuführen.
2
1
4
Schreibphase: Das Ergebnis der Operation
landet (abhängig vom Befehl) in einem der
Register oder im Hauptspeicher.
C.O.
14
Befehlszyklus
1.
Holphase: Zunächst muss ein Befehl aus dem
Speicher geholt und in das Befehlsregister
geladen werden.
2.
Dekodierphase: Das Steuerwerk untersucht
den Befehl hinsichtlich der vorzunehmenden
Arbeitsschritte, z. B. eine Addition.
3
3.
4.
C.O.
Ausführungsphase: Das Rechenwerk wird
vom Steuerwerk nun angewiesen, die
gewünschte Operation mit den Daten in den
Registern durchzuführen.
2
1
4
Schreibphase: Das Ergebnis der Operation
landet (abhängig vom Befehl) in einem der
Register oder im Hauptspeicher.
Hinweis: Aus Gründen der Vereinfachung wurde hier der Befehlszähler nicht berücksichtigt!
15
Befehlszyklus
1.
Holphase: Zunächst muss ein Befehl aus dem
Speicher geholt und in das Befehlsregister
geladen werden.
2.
Dekodierphase: Das Steuerwerk untersucht
den Befehl hinsichtlich der vorzunehmenden
Arbeitsschritte, z. B. eine Addition.
3
3.
4.
Ausführungsphase: Das Rechenwerk wird
vom Steuerwerk nun angewiesen, die
gewünschte Operation mit den Daten in den
Registern durchzuführen.
2
1
4
Schreibphase: Das Ergebnis der Operation
landet (abhängig vom Befehl) in einem der
Register oder im Hauptspeicher.
Ein Befehlszyklus benötigt i.d.R. also mehrere CPU-Takte, wobei jede Phase
C.O.
wiederum auch aus mehreren CPU-Takten bestehen kann.
16
Programmiert wird der Zyklus …
C.O.
17
Programmiert wird der Zyklus …
… mit einem Befehl als Ganzes, und nicht die einzelne Phase! Die
sind nämlich im Prozessor schon festgelegt.
C.O.
18
Programmiert wird der Zyklus …
… mit einem Befehl als Ganzes, und nicht die einzelne Phase! Die
sind nämlich im Prozessor schon festgelegt.
Aus
•
•
•
•
Holphase,
Dekodierphase
Ausführungsphase (Addition)
Schreibphase
C.O.
19
Programmiert wird der Zyklus …
… mit einem Befehl als Ganzes, und nicht die einzelne Phase! Die
sind nämlich im Prozessor schon festgelegt.
Aus
•
•
•
•
Holphase,
Dekodierphase
Ausführungsphase (Addition)
Schreibphase
wird der Additionsbefehl
ADD
C.O.
20
Addiert wird also mit ADD
C.O.
21
Addiert wird also mit ADD
… aber wo kommen die Daten her???
C.O.
22
… aber wo kommen die Daten her???
Zur Erinnerung: Die Daten
stehen in den Registern,
damit das Rechenwerk
sie auch nutzen kann:
C.O.
23
Register - kleine schnelle Speicher
Zur Erinnerung: Die Daten
stehen in den Registern,
damit das Rechenwerk
sie auch nutzen kann:
Name der Register
AX
BX
CX
DX
Daten
C.O.
24
Auch hier gilt das EVA-Prinzip!
Also müssen in die Register Daten eingegeben werden,
damit das Rechenwerk auch arbeiten kann.
C.O.
25
Auch hier gilt das EVA-Prinzip!
Also müssen in die Register Daten eingegeben werden,
damit das Rechenwerk auch arbeiten kann.
AX
BX
CX
DX
C.O.
26
Auch hier gilt das EVA-Prinzip!
Also müssen in die Register Daten eingegeben werden,
damit das Rechenwerk auch arbeiten kann.
AX
BX
CX
DX
Zuerst das AX - Register:
MOV AX, 0003
C.O.
27
Auch hier gilt das EVA-Prinzip!
Also müssen in die Register Daten eingegeben werden,
damit das Rechenwerk auch arbeiten kann.
AX
3
BX
CX
DX
Befehl wurde ausgeführt!
MOV AX, 0003
C.O.
28
Auch hier gilt das EVA-Prinzip!
Also müssen in die Register Daten eingegeben werden,
damit das Rechenwerk auch arbeiten kann.
AX
3
BX
CX
DX
Und jetzt das CX-Register:
MOV CX, 0004
C.O.
29
Auch hier gilt das EVA-Prinzip!
Jetzt stehen die Daten in den Registern: es kann
gerechnet werden!
AX
3
BX
CX
4
DX
C.O.
30
Auch hier gilt das EVA-Prinzip!
Jetzt stehen die Daten in den Registern: es kann
gerechnet werden!
AX
3
BX
CX
4
DX
Der vollständige Additionsbefehl:
ADD AX, CX
C.O.
31
Auch hier gilt das EVA-Prinzip!
Jetzt stehen die Daten in den Registern: es kann
gerechnet werden!
AX
3
BX
CX
4
DX
Der vollständige Additionsbefehl:
ADD AX, CX
Addiere auf den Inhalt des CX - Registers den Inhalt des CX - Registers!
C.O.
32
Auch hier gilt das EVA-Prinzip!
Jetzt stehen die Daten in den Registern: es kann
gerechnet werden!
AX
3
BX
CX
4
E
DX
Der vollständige Additionsbefehl:
ADD AX, CX
V & A
Addiere auf den Inhalt des CX - Registers den Inhalt des CX - Registers!
C.O.
33
Auch hier gilt das EVA-Prinzip!
Und nach der Programmausführung:
AX
7
BX
CX
4
E
DX
Der vollständige Additionsbefehl:
ADD AX, CX
V & A
Addiere auf den Inhalt des CX - Registers den Inhalt des CX - Registers!
C.O.
34
Und jetzt das ganze Programm
1. Schritt: In Register AX die Zahl 3 schreiben
2. Schritt: In Register CX die Zahl 4 schreiben
3. Schritt: Inhalte von CX und AX addieren und in AX speichern
C.O.
35
Und jetzt das ganze Programm
1. Schritt: In Register AX die Zahl 3 schreiben
2. Schritt: In Register CX die Zahl 4 schreiben
3. Schritt: Inhalte von CX und AX addieren und in AX speichern
MOV AX, 0003
MOV CX, 0004
ADD AX, CX
C.O.
36
Jetzt wird getestet
C.O.
37
Jetzt wird getestet
Prima!
C.O.
38
Der Haken:
MOV AX, 0003
MOV CX, 0004
Das versteht der
Computer nicht!
ADD AX, CX
C.O.
39
Die Lösung:
Es gibt Programme, welche die Assemblerbefehle in die
Maschinensprache übersetzen (z. B. unter DOS: debug).
MOV AX, 0003
B80300
MOV CX, 0004
B90400
ADD AX, CX
01C8
C.O.
40
Vom Quellprogramm zum
Maschinenprogramm
Es gibt Programme, welche die Assemblerbefehle in die
Maschinensprache übersetzen (z. B. unter DOS: debug).
MOV AX, 0003
B80300
MOV CX, 0004
B90400
ADD AX, CX
01C8
Quellprogramm
Übersetzung
Maschinenprogramm
C.O.
41
So sieht es aus:
Adressen
Maschinenprg.
Assemblerprg.
C.O.
42
Anmerkung
MOV AX, 0003
B80300
MOV CX, 0004
B90400
ADD AX, CX
01C8
Es handelt sich hier um die Umwandlung eines Assemblerprogramms in ein
Maschinenprogramm, welches die CPU direkt ausführen kann.
Beachte:
Sowohl die Zeichen der Assemblersprache als auch die Maschinenbefehle sind
im Computer binär abgespeichert. Die HEX-Codierung (z. B.: B9) dient nur der
besseren Lesbarkeit; „MOV CX, 0004“ ist in der binären Darstellung nicht
identisch mit „B90400“, sonst wäre ja die Übersetzung nicht notwendig.
C.O.
43
Darstellung der Logik: Struktogramm
1. Schritt: In Register AX die Zahl 3 schreiben
2. Schritt: In Register CX die Zahl 4 schreiben
3. Schritt: Inhalte von CX und AX addieren und in AX speichern
In Register AX die Zahl 3 schreiben
In Register CX die Zahl 4 schreiben
Inhalte von CX und AX addieren und in AX speichern
C.O.
44
Darstellung der Logik: Struktogramm,
allgemeine Formulierung
X := 3
Y := 4
Y := Y + X
C.O.
45
Darstellung der Logik: Struktogramm,
allgemeine Formulierung
X := 3
Y := 4
Y := Y + X
Beachte: Die Befehle/Anweisungen sind eindeutig
und ausführbar, ihre Anzahl endlich und ihre
Befolgung liefert nach endlich vielen Schritten die
Lösung eines Problems.
C.O.
46
Algorithmus
Die Befehle/Anweisungen sind eindeutig und
ausführbar, ihre Anzahl endlich und ihre Befolgung
liefert nach endlich vielen Schritten die Lösung
eines Problems.
Trifft dies auf eine Anweisungsliste zu, spricht
man von einem Algorithmus.
C.O.
47
Ausblick: Höhere Programmiersprache
Quellprogramm:
a = InputBox("Wert für a:")
b = InputBox("Wert für b:")
c = a + b
MsgBox ("Summe:
" & c)
E
V
A
C.O.
48
Herunterladen