Skript in PDF - Theoretische Informatik - Technische Universität ...
Skript in PDF - Theoretische Informatik - Technische Universität ...
Skript in PDF - Theoretische Informatik - Technische Universität ...
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: