ram

Aus ProgrammingWiki

Inhaltsverzeichnis

Kreativaufgabe RAM Programm

Aufgabenstellung

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

RAM Programm 1

BNrBefehlKommenter
|
0
R0 = 5R0 = n
|
1
R3 = 1Inkrement-/Dekrement-Variable
|
2
R4 = 0Zurücksetzen des Multiplikatioszwischenergebnisses
|
3
IFZERO R2 GOTO 7wenn Multiplikationszähler (R2) gleich 0, Multiplikation beendet
|
4
R4 += R1Zwischenergebnis der Multiplikation
|
5
R2 -= R3Multiplikationszähler dekrementieren
|
6
GOTO 3nächster Multiplikationszyklus
|
7
R5 = R4Quadrat der Testvariable in R5 zwischenspeichern
|
8
R6 = R0n in R6 zwischenspeichern
|
9
IFZERO R6 GOTO 17wenn R6 gleich 0, Quadrat der Testvariable >= n
|
10
IFZERO R5 GOTO 14wenn R5 gleich 0, Quadrat der Testvariable <= n
|
11
R5 -= R3temp-Quadrat dekrementieren
|
12
R6 -= R3temp-n dekrementieren
|
13
GOTO 9nächster Testzyklus
|
14
R1 += R3Testvariable inkrementieren
|
15
R2 = R1Multiplikationszähler gleich der Testvariable setzen
|
16
GOTO 2nächster Zyklus mit inkrementierter Testvariable
|
17
IFZERO R5 GOTO 19wenn Quadrat der Testvariable = n, dann kein Abrunden nötig
|
18
R1 -= R3Ergebnis dekrementieren zwecks Abrunden
|
19
R0 = R1Ergebnis nach R0 übernehmen
|
20
STOPProgrammende

Programm Beispiel für RAM Programm 1

RAM Programm 2

BNrBefehlKommenter
|
0
R0 = 5R0 = n
|
1
R3 = 1Inkrement-/Dekrement-Variable
|
2
IFZERO R2 GOTO 6wenn Multiplikationszähler (R2) gleich 0, Multiplikation beendet
|
3
R4 += R1Zwischenergebnis der Multiplikation
|
4
R2 -= R3Multiplikationszähler dekrementieren
|
5
GOTO 2nächster Multiplikationszyklus
|
6
R4 -= R0Subtraktion zum Test ob das Quadrat der Testvariablen (R1) größer ist als n
|
7
IFZERO R4 GOTO 9wenn Ergebnis der Subtraktion gleich 0 ist, Test mit inkrementierter Testvariable wiederholen
|
8
GOTO 12Ergebnis der Subtraktion größer 0, Ergebnis gefunden
|
9
R1 += R3Testvariable inkrementieren
|
10
R2 = R1Multiplikationszähler gleich der Testvariable setzen
|
11
GOTO 2nächster Testzyklus
|
12
R1 -= R3Ergebnis dekrementieren zwecks Abrunden
|
13
R0 = R1Ergebnis nach R0 übernehmen
|
14
STOPProgrammende

Programm Beispiel für RAM Programm 2