Hallo,
ganz allgemein gibt es hier nur ein paar Hilfsmittel, die ich die empfehlen kann. Erstens würde ich deinen Ansatz mit konkreten Zahlen ruhig weiter verfolgen, am besten erstellst du dir dazu eine Tabelle, in der die jeweils aktuellen Werte der Speicherstellen bzw. Register eingetragen werden. Nach zwei bis drei verschiedenen Beispielen bekommt man doch zumeist einen guten Eindruck, was das Programm berechnet (siehe auch die Tut-Aufgaben dazu).
Einfacher Grundsatz (auch hier mal wieder): Üben, dann kommt das Gefühl dafür!
Zur Aufgabe:
Für die a) ist ja insbesondere der Teil der "innerloop" interessant, dank der Kommentare nebendran wird recht schnell klar, dass hier die Zahl (n) so oft aufaddiert wird, bis der Zähler R1 bei 0 steht. Da R1 zu Beginn ebenfalls n ist, sind das n Durchläufe, also n+n+n+n+... (n-mal) -> n^2.
Bei der b) wird dann erst wirklich die indirekte Adressierung benötigt. Am Ende der "innerloop" (JUMPZERO) kommen wir zu "store". Dort wird in der ersten Zeile der Wert in R3 (unser aktuelles Ergebnis n^2) indirekt in R2 gespeichert, also in das Hauptspeicherfeld, dessen Adresse in R2 enthalten ist. Da R2 = n ist, wird unser Ergebnis n^2 an die Hauptspeicherstelle n gespeichert. Danach wird dann R8 von n auf n-1 verringert und die "outerloop" startet mit diesem Wert von vorn.
Soweit zu diesem Programm, allgemein einfach ein paar Mal üben, die Funktionen abzulesen (Tipp: Es kommt wohl kaum sowas wie 3x^2+7x+5 raus, die Funktionen sind eher schmal gehalten ;) ).
Viele Grüße
Max (Tutor)