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.
| 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