Hallo Valentiano!
Wenn ein R1 Register durch ein R2 Register multipliziert seien soll, kann man den R2 einfach R1 mal zu der bisheriger Summe (am Anfang gleich 0) in einem 16-bit Register (der aus zwei 8-bit Register MH und ML besteht) addieren. Das sollte so wie das PAD im Code zeigt ablaufen.
Dein Programm macht aber nur mehrmals Verschiebung um 1 bit nach rechts, was der Teilung durch 2 entspricht.
MfG
Code:
V
0->MH ;löschen
0->ML ;löschen
R1->SZ ;R1 in SZ (Schleifenzähler) kopieren
.--->ML+R2->ML ;R2 zum ML addieren
| C=1 ? N ---. ;Überlaufen?
| J |
| MH+1->MH | ;MH um 1 erhöhen
| V<------´
| SZ=0 J ---> return ;Schleife R1 mal abgelaufen? Wenn ja, Ende
| N
| V
`-------´
Lesezeichen