Protokoll vom 20.12.2004                                       David Spielberger

 

 

Zu Von-Neumann-Rechner

 

 

-         Speicher: Programme, Daten, Ergebnisse

-         5 Funktionseinheiten

-         Struktur des Rechners ist unabhängig vom jeweiligen Problem

-         Programm wird im Speicher abgelegt

-         Der Speicher wird in gleichgroße Zellen unterteilt, die fortlaufend nummeriert werden (Adresse)

-         Aufeinanderfolgende Befehle werden in aufeinander folgenden Speicherzellen abgelegt. (Prinzip des linearen Programms)

-         Durch Sprungbefehle kann die Abarbeitung der Befehle verändert werden.

-         Es gibt arithmetische Befehle (+,-,…); Transportbefehle (vom Speicher zum Rechenwerk); bedingte Sprünge (LDA – Lade in Akkumulator; STO – Speichere Inhalt des Akkumulators im Speicher)

o       Arithmetische Befehle:

·        ADD (addiere zum Inhalt des Akk.)

·        SUB (subtrahiere vom Inhalt des Akk.)

·        MUL

·        DIV

o       Sprungbefehle:

·        BRT (unbedingter Sprung)

·        BRE (bedingter Sprung; wenn Inhalt des Akk. = 0, dann folgt Sprung)

·        BRP (bedingter Sprung; wenn Inhalt des Akk. > 0, dann folgt Sprung)

·        END (beim Programmende)

 

-         Adressteil

o       U: unmittelbare Adressierung

§         z.B. LDAU 34 (34 wird unmittelbar in den Akku geladen)

o       D: direkte Adressierung

§         z.B. LDAD 34 (Inhalt der Speicherzelle 34 wird in den Akk. Geladen)

 

 

 

a:= 4 * a + 9

 

Nr

Befehl

Akk.

30 (a)

31 (4)

32

0

LDAD 31

4

2

4

 

1

MULD 30

8

 

 

 

2

ADDU 9

17

 

 

 

3

STOD 30

 

17

 

 

4

END

 

 

 

 

 

 

a:= (b - a)² + 2 a 

    

30

31

32

a

b

h

 

 (h ist eine Hilfsvariable)    

 

Nr

Befehl

 

0

LDAD 31

 

1

SUBD 30

 

2

STOD 32

à h:=b-a

3

MULD 32

 

4

STOD 32

à h:=h*h

5

LDAU 2

 

6

MULD 30

à Akk.: 2*a

7

ADDD 32

 

8

STOD 30

 

9

END

 

 

 

CosiWin: c:= a + b + 3

 

30

31

32

33

a

b

3

c

 

 

 

Die Summe der ersten „n“ natürlichen Zahlen, programmiert mit einer for-Schleife

 

Procedure TForm1.Summe

VAR N, I, Sum : integer;

Begin

            N:=StrToInt(edit1.text);

            Sum:=0;

            For I:=0 to N do

                        Sum:= sum + I;

            Edit1.text:= IntToStr(sum);

End;

 

 

Nr

Befehl

Akk.

30

31

32

 

 

 

N=3

Sum

i

0

LDAU 0

0

 

 

 

1

STOD 31

 

 

0

 

2

LDAU 1

1

 

 

 

3

STOD 32

 

 

 

1

4

LDAD 31

Sum

 

 

 

5

ADDD 32

Sum + I

 

 

 

6

STOD 31

 

 

‘sum’

 

7

LDAD 32

I

 

 

 

8

ADDU 1

 

 

 

 

9

STOD 32

 

 

 

 

10

LDAD 30

 

 

 

 

11

SUBD 32

 

 

 

 

12

ADDU 1

 

 

 

 

13

BRPD 4

 

 

 

 

14

END

 

 

 

 

 

 

Fenster schließen