Vorlesung 8
Aus ProgrammingWiki
Inhaltsverzeichnis |
RAM-Programme
Führen Sie obiges Programmbeispiel per Hand aus.
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.
Nr | Methode | Kommentar |
---|---|---|
0 | R0 = 3 | R0 = n (Berechnung Wurzel von 3) |
1 | R3 = 1 | R2 = fixer Wert für Inkrement/Dekrement |
2 | R5 = R1 | R5 = aktuelle Testvariable |
3 | R6 = R1 | R6 = Multiplikationszähler |
4 | IFZERO R6 GOTO 8 | Wenn Multiplikationszähler = 0, ist Multiplikation fertig |
5 | R7 += R5 | R7 = Multiplikationszwischenergebnis |
6 | R6 -= R3 | Multiplikationszähler um 1 dekrementieren |
7 | GOTO 4 | |
8 | R2 = R7 | R2 = Ergebnis der Multiplikation zwischenspeichern |
9 | R7 = 0 | Multiplikationszwischenergebnis auf 0 zurücksetzen |
10 | R1 += R3 | Testvariable inkrementieren |
11 | R4 = R2 | Multiplikationsergebnis nach R4 übertragen |
12 | R4 -= R0 | n vom Multiplikationsergebnis abziehen |
13 | IFZERO R4 GOTO 2 | Wenn Ergebnis der Subtraktion 0, Multiplikation mit inkrementierten Wert fortsetzen |
14 | R5 -= R3 | R5 dekrementieren zum Abrunden |
15 | R0 = R5 | Ergebnis ü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
n = 10