Beispiel: Summe der ersten n Zahlen Variante I n enthalte eine positive ganze Zahl. int Summe(int n) { int sum = n; for (int i = n-1; i > 0; i--) sum = sum + i; return sum; } sum enthält die gesuchte Summe. Beispiel: Summe der ersten n Zahlen Variante II n enthalte eine positive ganze Zahl und sei vom Typ int. int Summe(int n) { int sum = n; int i = n; LOOP: i = i -1; if (i <= 0) then goto THE_END; sum = sum + i; goto LOOP; THE_END: return sum; } Beispiel: Summe der ersten n Zahlen Variante III n enthalte eine positive ganze Zahl und sei vom Typ int. int Summe(int n) { int RR = 0 ; RR = RR + n; sum = RR; LOOP: RR = RR -1; if (RR <= 0) then goto THE_END; n = RR; RR = RR + sum; sum = RR; RR = n; goto LOOP; THE_END: return sum; } Beispiel: Summe der ersten n Zahlen Assembler Speicherwort 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 Befehl OT AT 1 0 0 3 => 998 + 1000 -> 999 - 997 S<= 1011 -> 1000 + 999 => 999 + 1000 S 1004 H 0 Kommentar Konstante 1 Konstante 0 Variable sum Variable n BEGIN: <RR> = 0; <RR> = <RR> + n; // RR = n sum = <RR>; // sum = n LOOP: <RR> = <RR> - 1; if (<RR>=0) then goto THE_END; n = <RR>; <RR> = <RR> + sum; sum = <RR>; <RR> = 0; <RR> = <RR> + n; goto LOOP; THE_END: exit(); Beispiel: Summe der ersten n Zahlen Assembler und Maschinensprache Speicherwort 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 Wert 1 0 0 3 1342178278 268436456 1073742823 5368719092 1879049203 1073742824 268436455 1342178279 268436456 1610613740 0 Befehl OT AT => + -> S<= -> + => + S H 998 1000 999 997 1011 1000 999 999 1000 1004 0 Kommentar Konstante 1 Konstante 0 Variable sum Variable n BEGIN: <RR> = 0; <RR> = <RR> + n; sum = <RR>; // sum=n LOOP: <RR> = <RR> - 1; if (<RR>=0) then goto END; n = <RR>; <RR> = <RR> + sum; sum = <RR>; <RR> = 0; <RR> = <RR> + n; goto LOOP; END: exit(); Adresse 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1004 1005 1006 1007 1008 1009 1010 1004 1005 1011 Nächster Befehl OT AT => 998 + 1000 -> 999 997 S<= 1011 -> 1000 + 999 => 999 + 1000 S 1004 997 S<= 1011 -> 1000 + 999 => 999 + 1000 S 1004 997 S<= 1011 H 0 Gegenwärtige Speicherbelegung RR ZR 997 998 999 0 0 1 0 0 0 0 1 0 0 3 1 1 0 0 3 1 1 0 3 2 1 1 0 3 2 1 1 0 3 2 1 1 0 3 5 1 1 0 3 0 0 1 0 5 2 1 1 0 5 2 1 1 0 5 1 1 1 0 5 1 1 1 0 5 1 1 1 0 5 6 1 1 0 5 0 0 1 0 6 1 1 1 0 6 1 1 1 0 6 0 0 1 0 6 0 0 1 0 6 1000 3 3 3 3 3 3 2 2 2 2 2 2 2 1 1 1 1 1 1 1