Also ich weiss ja nicht was die Gausformel ist... aber wenn ich Rei's Programm in eine Hochsprache (oder Pseudocode) übersetzte, dann würde es vielleicht so aussehen:

e = eingabe
a = ausgabe
------
a = 0;
while (e >= 0)
begin
a = a + e;
e = e - 1;
end;
-----

Dann würde ich das das ganze in für menschen gerade noch verständliche Assemblersprache übersetzen: d.h. keine Adressen sondern Labels verwenden...
(ich verwende mal meine an 8088 assembler angelehnte pseudsprache...)

[x] - Adresse von Label x
@x: Label x
---------
MOV [a], 0 (kann entfallen wenn die Speicherstelle mit 0 vorinitialisiert ist, siehe @a:)
MOV AC, [e]
@loop: CJP [ende]
ADD AC, [a]
MOV [a], AC (normalerweise STO?)
MOV AC, [e]
SUB AC, 1
MOV [e], AC (normalerweise STO?)
JMP [loop]
@e: 10
@a: 0
@ende: HLT (Prozessor anhalten <img src="/ubbthreads/images/graemlins/winkwink.gif" alt="" />)
-------
(
MOV AC, [e] bedeutet: hole wert an adresse e und lege ihn in AC ab
ADD AC, 1 bedeutet: addiere 1 zu AC und lege Ergebnis in AC ab
)

Erst im nächsten Schritt würde ich das Assemblerprogramm in Maschinennahe Sprache übersetzen... d.h. die Labels durch echte Adressen ersetzen:

Speicheradresse - Befehl bzw. Wert oder Adresse von Wert
-------
900 - MOV 1
901 - [e] <= 916
@loop: 902 - CJP
903 - [ende] <= 918
904 - ADD 1
905 - [a] <= 917
906 - STO
907 - [a] <= 917
908 - MOV 1
909 - [e] <= 916
910 - SUB 0
911 - 1
912 - STO
913 - [e] <= 916
914 - JMP
915 - [loop] <= 902
@e: 916 - 10
@a: 917 - 0
@ende: 918 - Ende vom Programm
--------

Jetzt muss man nur noch MOV 1, MOV 0, ADD 1, SUB 0, STO, etc. durch die entsprechenden vom Prozessor verständlichen Zahlenwert ersetzen... *seufz*

So, ich hoffe das war halbwegs verständlich. Ob das Programm läuft (und fehlerfrei ist) habe ich nicht ausprobiert. Vielleicht konnte ich Alrik ja ein wenig helfen <img src="/ubbthreads/images/graemlins/winkwink.gif" alt="" />