Vorlesung 8
Aus ProgrammingWiki
Archivierte Version vom 2015-06-24T17:02:14+00:00. Aktuelle Version
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
| 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 9 | Wenn Multiplikationszähler = 0, ist Multiplikation fertig |
| | 5 | R7 += R5 | R7 = Multiplikationszwischenergebnis |
| | 6 | R6 -= R3 | Multiplikationszähler um 1 verringern |
| | 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 |
Beispielrechnung
n = 10