Vorlesung 8

Aus ProgrammingWiki

Wechseln zu: Navigation, Suche

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.


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

Simaknoc RAM KA Beispiel3 und4.JPG


n = 10

Simaknoc Testrechnung-RAM-Wurzel10.JPG

Persönliche Werkzeuge