18.09.2013 Aufrufe

Skript in PDF - Theoretische Informatik - Technische Universität ...

Skript in PDF - Theoretische Informatik - Technische Universität ...

Skript in PDF - Theoretische Informatik - Technische Universität ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

4.1. RAM 99<br />

Hier ist die Liste aller Befehle:<br />

Befehl Wirkung<br />

READ :=, := + 1, der Lesekopf bewegt<br />

sich nach rechts<br />

WRITE Der Schreibkopf schreibt und bewegt sich nach<br />

rechts, := + 1.<br />

LOAD i := und := + 1<br />

STORE i := und := + 1<br />

ADD i := + und := + 1<br />

PRED :=pred und := + 1. Hier gilt:<br />

pred (n + 1) = n und pred 0 = 0.<br />

GOTO m<br />

IF Ri = 0 GOTO m<br />

:= m<br />

<br />

m falls Ri = 0<br />

:=<br />

+ 1 sonst<br />

m falls > 0<br />

IF Ri > 0 GOTO m :=<br />

+ 1 sonst<br />

STOP Masch<strong>in</strong>e hält.<br />

Bemerkung 1. Für <strong>in</strong>direkte Adressierung dürfen wir ∗i (statt i) benutzen,<br />

z.B. hat LOAD ∗i die Wirkung := (also wird im Akkumulator der<br />

Inhalt des Registers, dessen Adresse <strong>in</strong> Ri steht, gespeichert). Analog für STORE ∗i<br />

und ADD ∗i. Außerdem benutzen wir !i statt i für Konstanten: z.B. hat STORE !i<br />

die Wirkung := i und := + 1.<br />

Die obige Liste von Befehlen ist kurz, um das Modell übersichtlich zu gestalten,<br />

aber weitere Befehle lassen sich leicht programmieren:<br />

Beispiel 1. SUCC i. Wir wollen den Befehl benutzen, der den Inhalt des Registers<br />

Ri um e<strong>in</strong>s erhöht. SUCC i ist dann dieses Unterprogramm:<br />

LOAD !1 [1 <strong>in</strong> den Akkumulator]<br />

ADD i<br />

STORE i<br />

<br />

[:= +1]<br />

Beispiel 2. PRED i. Der Befehl, der die Wirkung := −1, falls <br />

> 0 ist, hat, lässt sich analog programmieren.<br />

Beispiel 3. SUB i. Der Befehl, der die folgende Wirkung − , falls<br />

≥ und R0 := 0 ansonsten hat, hat das folgende Programm:<br />

0. IF R0 = 0 GOTO 4<br />

1. PRED<br />

2. PRED i<br />

3. GOTO 0<br />

4. LOAD i<br />

Beispiel 4. IF Ri = k GOTO m. Für jede Konstante k können wir diesen Sprungbefehl<br />

durch das folgende Unterprogramm ersetzen:<br />

LOAD !k<br />

SUB i<br />

STORE i<br />

IF Ri = 0 GOTO m<br />

Beispiel 5. Multiplikation. Die Funktion f(n, m) = n ∗ m kann wie folgt programmiert<br />

werden: wir speichern erst die E<strong>in</strong>gabe n <strong>in</strong> R1 und m <strong>in</strong> R2:

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!