Wenn Du die Funktion erhalten möchtest, solltest Du zuerst einmal die Befehlsfolge von 1 bis n durchnummerieren.
Danach musst Du die Registermachine vorbelegen.
zB: c1 mit x und c2 mit y (c0 ist in der Startkonfiguration immer unbelegt, auf c0 werden alle arbeiten ausgeführt, der Rest der Register kann nur in c0 geladen werden oder mit den Wert von c0 gefüllt/gespeichert werden)
1:LOAD2 -> lade Inhalt von Register c2 in den Akkumulator (c0 = Arbeitsregister)
2:if c0 = 0 GOTO 10 -> ist der Wert in c0 jetzt gleich 0 ? Wenn ja springe zu Befehl 10, sonst mach mit dem nächsten Befehl weiter
3:LOAD 1 -> lade Inhalt von c1 in c0
4:CADD 1 -> addiere die Konstante 1 zu c0 hinzu
5:STORE 1 -> speichere c0 in c1
6:LOAD 2 -> lade c2 in c0
7:CSUB 1 -> subtrahiere von c0 die Konstante 1
8:STORE 2 -> speicher c0 in c2
9:GOTO 2 -> gehe zu Befehl 2
10:END -> Beende das Programm
Wenn Du das jetzt auf einen Zettel mit c1=x und c2=y durchrechnest, und die verschiedenen IF-Zweige beachtest, müsstest Du auf c1 = x +1 +1 +1 +... (y-mal "+1") kommen.
Daraus ergibt sich dann c1 = c1 + c2 , im Beispiel also x+y
Zu R2 nur soviel: Mult 1 heisst in c0 das Ergenis aus c0*c1 schreiben.
Beim If ist zu beachten, dass beim abziehen einer grösseren Zahl von einer kleineren immer Null das Ergebnis ist.
Die Lösung ist einfach durch aufschreiben und auszuprobieren zu erhalten:
c1 = {
c2 + c1, wenn c2 =< 5
c2 * c1, sonst
PS: im Java-Forum bist Du damit aber eigentlich etwas Falsch.