Meiner Meinung nach ist die Musterlösung korrekt. Die "JNZ-Schleife" wird, wie du richtig erkannt hast, x-mal ausgeführt. In der "Schleife" stehen 3 Befehle:
MULTIPLY R1, R2, R2
MULTIPLY R2, R1, R2
SUBTRACT R3, #1, R3
Der letzte dekrementiert nur die "Schleifenvariable" r3, aber der erste speichert r1*r2 in r2 ab. Der zweite Befehl berechnet r2*r1 und speichert das ergebnis ab. Setzt man jetzt den Wert, der r2 im ersten Befehl zugewiesen wird, in den zweiten ein, sieht man, dass der Wert r2*(r1^2) in r2 gespeichert wird, d.h. r2 wird mit r1^2 multipliziert. Nach dem ersten Durchlauf steht in r2 also y*x^2. Im nächsten Durchlauf wird dieses Zwischenergebnis nochmal mit r1^2 = x^2 multipliziert, also steht danach y*x^2 * x^2 in r2 usw. Insgesamt steht also nach dem letzten Durchlauf y*((x^2)^x) =y*x^(2*x) in r2. Mit dem letzten ADD-Befehl kommt man auf die Musterlösung.
Tobias (Tutor)