Programmierung: Einführung Programmausführung im Prozessor Ein kleines Programm Quellprogramm –...

Post on 05-Apr-2015

114 views 3 download

transcript

Programmierung: Einführung

Programmausführung im Prozessor

Ein kleines Programm

Quellprogramm – Maschinenprogramm

Struktogramm und Algorithmus

Christoph Oberweis, BBSW Trier

2

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.

3

Alles im richtigen Takt!

C.O.

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.

4

Komponenten der CPU

C.O.

Vereinfachte Darstellung

5

Komponenten der CPU

Steuerwerk: interpretiert die Befehle, steuert ihre Ausführung

C.O.

6

Komponenten der CPU

Steuerwerk: interpretiert die Befehle, steuert ihre Ausführung

Register: kleine Spezialspeicher für Zwischenergebnisse und Befehle (schnellster Zugriff)

C.O.

7

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.

Komponenten der CPU

8

… 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 stehenDaten und die Programme

C.O.

9

Eingabe Verarbeitung Ausgabe

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 stehenDaten und die Programme

C.O.

Eingabe

Verarbeitung

Ausgabe

10C.O.

Abarbeitung eines BefehlsVereinfachte Darstellung

11

1. Holphase: Zunächst muss ein Befehl aus dem Speicher geholt und in das Befehlsregister geladen werden.

C.O.

Befehlszyklus

1

12

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.

C.O.

Befehlszyklus

1

2

13

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. Ausführungsphase: Das Rechenwerk wird vom Steuerwerk nun angewiesen, die gewünschte Operation mit den Daten in den Registern durchzuführen.

C.O.

Befehlszyklus

1

23

14

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. Ausführungsphase: Das Rechenwerk wird vom Steuerwerk nun angewiesen, die gewünschte Operation mit den Daten in den Registern durchzuführen.

4. Schreibphase: Das Ergebnis der Operation landet (abhängig vom Befehl) in einem der Register oder im Hauptspeicher.

C.O.

Befehlszyklus

1

2

4

3

15

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. Ausführungsphase: Das Rechenwerk wird vom Steuerwerk nun angewiesen, die gewünschte Operation mit den Daten in den Registern durchzuführen.

4. Schreibphase: Das Ergebnis der Operation landet (abhängig vom Befehl) in einem der Register oder im Hauptspeicher.

C.O.

Befehlszyklus

Hinweis: Aus Gründen der Vereinfachung wurde hier der Befehlszähler nicht berücksichtigt!

1

2

4

3

16

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. Ausführungsphase: Das Rechenwerk wird vom Steuerwerk nun angewiesen, die gewünschte Operation mit den Daten in den Registern durchzuführen.

4. Schreibphase: Das Ergebnis der Operation landet (abhängig vom Befehl) in einem der Register oder im Hauptspeicher.

C.O.Ein Befehlszyklus benötigt i.d.R. also mehrere CPU-Takte, wobei jede Phase

wiederum auch aus mehreren CPU-Takten bestehen kann.

Befehlszyklus

1

2

4

3

17

Programmiert wird der Zyklus …

C.O.

18

Programmiert wird der Zyklus …

C.O.

… mit einem Befehl als Ganzes, und nicht die einzelne Phase! Die sind nämlich im Prozessor schon festgelegt.

19

Programmiert wird der Zyklus …

C.O.

… mit einem Befehl als Ganzes, und nicht die einzelne Phase! Die sind nämlich im Prozessor schon festgelegt.

• Holphase, • Dekodierphase• Ausführungsphase (Addition) • Schreibphase

Aus

20

Programmiert wird der Zyklus …

C.O.

… mit einem Befehl als Ganzes, und nicht die einzelne Phase! Die sind nämlich im Prozessor schon festgelegt.

• Holphase, • Dekodierphase• Ausführungsphase (Addition) • Schreibphase

Aus wird der Additionsbefehl

ADD

21C.O.

Addiert wird also mit ADD

22C.O.

… aber wo kommen die Daten her???

Addiert wird also mit ADD

23C.O.

Zur Erinnerung: Die Daten stehen in den Registern, damit das Rechenwerk sie auch nutzen kann:

… aber wo kommen die Daten her???

24C.O.

AX BX CX DXName der Register

Daten

Zur Erinnerung: Die Daten stehen in den Registern, damit das Rechenwerk sie auch nutzen kann:

Register - kleine schnelle Speicher

25

Auch hier gilt das EVA-Prinzip!

C.O.

Also müssen in die Register Daten eingegeben werden, damit das Rechenwerk auch arbeiten kann.

26

Auch hier gilt das EVA-Prinzip!

C.O.

Also müssen in die Register Daten eingegeben werden, damit das Rechenwerk auch arbeiten kann.

AX BX CX DX

27

Auch hier gilt das EVA-Prinzip!

C.O.

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

28

Auch hier gilt das EVA-Prinzip!

C.O.

Also müssen in die Register Daten eingegeben werden, damit das Rechenwerk auch arbeiten kann.

AX BX CX DX

Befehl wurde ausgeführt!

MOV AX, 0003

3

29

Auch hier gilt das EVA-Prinzip!

C.O.

Also müssen in die Register Daten eingegeben werden, damit das Rechenwerk auch arbeiten kann.

AX BX CX DX

Und jetzt das CX-Register:

MOV CX, 0004

3

30

Auch hier gilt das EVA-Prinzip!

C.O.

Jetzt stehen die Daten in den Registern: es kann gerechnet werden!

AX BX CX DX43

31

Auch hier gilt das EVA-Prinzip!

C.O.

Jetzt stehen die Daten in den Registern: es kann gerechnet werden!

AX BX CX DX43

Der vollständige Additionsbefehl:

ADD AX, CX

32

Auch hier gilt das EVA-Prinzip!

C.O.

AX BX CX DX43

Der vollständige Additionsbefehl:

ADD AX, CXAddiere auf den Inhalt des CX - Registers den Inhalt des CX - Registers!

Jetzt stehen die Daten in den Registern: es kann gerechnet werden!

33

Auch hier gilt das EVA-Prinzip!

C.O.

AX BX CX DX43

Der vollständige Additionsbefehl:

ADD AX, CXAddiere auf den Inhalt des CX - Registers den Inhalt des CX - Registers!

E

V & A

Jetzt stehen die Daten in den Registern: es kann gerechnet werden!

34

Auch hier gilt das EVA-Prinzip!

C.O.

AX BX CX DX47

Der vollständige Additionsbefehl:

ADD AX, CXAddiere auf den Inhalt des CX - Registers den Inhalt des CX - Registers!

E

V & A

Und nach der Programmausführung:

35

Und jetzt das ganze Programm

C.O.

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

36

Und jetzt das ganze Programm

C.O.

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, 0003MOV CX, 0004 ADD AX, CX

37

Jetzt wird getestet

C.O.

38

Jetzt wird getestet

C.O.

Prima!

39

Der Haken:

C.O.

MOV AX, 0003

MOV CX, 0004

ADD AX, CX

Das versteht der Computer nicht!

40

Die Lösung:

C.O.

MOV AX, 0003 B80300

MOV CX, 0004 B90400

ADD AX, CX 01C8

Es gibt Programme, welche die Assemblerbefehle in die

Maschinensprache übersetzen (z. B. unter DOS: debug).

41

Vom Quellprogramm zum Maschinenprogramm

C.O.

MOV AX, 0003 B80300

MOV CX, 0004 B90400

ADD AX, CX 01C8

Es gibt Programme, welche die Assemblerbefehle in die

Maschinensprache übersetzen (z. B. unter DOS: debug).

Quellprogramm Maschinen- programm

Übersetzung

42C.O.

So sieht es aus:

C.O.

Adressen Maschinenprg. Assemblerprg.

43C.O.

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.

Anmerkung

44

Darstellung der Logik: Struktogramm

C.O.

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

45

Darstellung der Logik: Struktogramm, allgemeine Formulierung

C.O.

X := 3

Y := 4

Y := Y + X

46

Darstellung der Logik: Struktogramm, allgemeine Formulierung

C.O.

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.

47

Algorithmus

C.O.

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.

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.

48

Ausblick: Höhere Programmiersprache

C.O.

a = InputBox("Wert für a:") b = InputBox("Wert für b:")

c = a + b

MsgBox ("Summe: " & c)

E

VA

Quellprogramm: