Vorlesung 8

Aus ProgrammingWiki

Inhaltsverzeichnis

RAM-Programme

Führen Sie obiges Programmbeispiel per Hand aus.

Simaknoc__MultipliziererRAM_Hand.JPG


Kreativaufgabe

Geben Sie mind. ein RAM-Programm zur Berechnung der Funktion w : \N \mapsto \N mit w(n) = \left\lfloor \sqrt{n} \right\rfloor an.

Programm

Hinweis: Programm schließt die 0 in \N ein.


NrMethodeKommentar
|
0
R0 = 3R0 = n (Berechnung Wurzel von 3)
|
1
R3 = 1R2 = fixer Wert für Inkrement/Dekrement
|
2
R5 = R1R5 = aktuelle Testvariable
|
3
R6 = R1R6 = Multiplikationszähler
|
4
IFZERO R6 GOTO 8Wenn Multiplikationszähler = 0, ist Multiplikation fertig
|
5
R7 += R5R7 = Multiplikationszwischenergebnis
|
6
R6 -= R3Multiplikationszähler um 1 dekrementieren
|
7
GOTO 4
|
8
R2 = R7R2 = Ergebnis der Multiplikation zwischenspeichern
|
9
R7 = 0Multiplikationszwischenergebnis auf 0 zurücksetzen
|
10
R1 += R3Testvariable inkrementieren
|
11
R4 = R2Multiplikationsergebnis nach R4 übertragen
|
12
R4 -= R0n vom Multiplikationsergebnis abziehen
|
13
IFZERO R4 GOTO 2Wenn Ergebnis der Subtraktion 0, Multiplikation mit inkrementierten Wert fortsetzen
|
14
R5 -= R3R5 dekrementieren zum Abrunden
|
15
R0 = R5Ergebnis übernehmen
|
16
STOP

Beispielrechnungen

In den Beispielrechnungen wurden jeweils der aktuelle Befehl und die damit zusammenhängende Registerveränderung, sowie Befehlssprünge dargestellt.

n=3 und n=4

Simaknoc__RAM_KA_Beispiel3_und4.JPG


n = 10

Simaknoc__Testrechnung-RAM-Wurzel10.JPG