Da bleibt dir nur die Möglichkeit eine Naked Funktion zu nehmen. Denn die resturn-Anweisung ist nicht mehr Teil des Assembler.
Es ist so. So wie die Parameter an einer bestimmten stelle abgelegt werden, wird auch der Returnwert in einem ganz bestimmten Register abgelegt. Denn in Assembler gibt es keinen Return-Wert. Welches Register das ist hängt vom Compiler ab. Die sind da alle Unterschiedlich. Schau da am besten in der Doku des Compilers nach.
Wenn du das Buch Spieleprogrammierung Gems 1 hast, kannst du auf Seite 68 nachschauen. Hier mal ein Ausschnitt:
4. Einfache Nicht-Fließkommawerte wie Integers und Pointer werden im EAX-Register gespeichert. Acht-Byte-Strukturen werden in EDX und EAX als Paar gespeichert. float und double werden über die FPU in ST0 zurückgegeben. Rückgabewerte für Benutzerdefinierte Typen kriegen ihre Adresse als letztes auf den Stack gepusht, aber sie werden auch in EAX zurückgegeben.
Gilt für VC++ für x86 Windows-Systeme
So...ich hoffe das Hilft dir weiter.