ERLEDIGT
NEIN
NEIN
ANTWORTEN
2
2
ZUGRIFFE
674
674
EMPFEHLEN
-
03.06.09 20:14 #1
- Registriert seit
- Dec 2007
- Beiträge
- 7
Hallo,
ich habe zwar schon mal in Assembler etwas programmiert, aber jetzt stehe ich scheinbar gerade auf dem Schlauch.
Ich verwende NASM und habe ein Assemblerfile, das folgende Funktion enthält:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14
_swap: push eax ; push ebx ; push ecx ; mov ecx, esp ; mov eax, [ecx+8] ; Argument 1 nach eax holen mov ebx, [ecx+12] ; Argument 2 (ein Zeiger auf eine Variable) nach ebx holen mov [ebx], eax ; Argument 1 dahin schreiben, wo Argument 2 hinzeigt pop ecx ; pop ebx ; pop eax ; ret ;
Die Signatur sieht in C wie folgt aus:
Code :1
extern void swap (int a, int* b)
Mein Ziel ist, dass ich den Inhalt der Variable a and die Speicherstelle kopiere, an der sich b befindet. Allerdings scheint obiger Code das nicht zu leisten.
Ich kann alles wunderbar kompilieren und die Funktion aus C heraus aufrufen. Wenn ich das Programm aber starte, erhalte ich die Windows-Meldung "swap.exe funktioniert nicht mehr" (-> Programm schließen).
Weiß jemand, wo der Fehler liegt?
-
04.06.09 08:46 #2
- Registriert seit
- Jun 2005
- Beiträge
- 8.169
Hi.
Deine Offset Berechnung der Argumente ist falsch.
Wenn du 3 Werte auf den Stack pushst, dann verminderst du ESP um 3 * 4 Byte.
Um an die Argumente der Funktion zu kommen mußt du dann ESP + 16 und ESP + 20 rechnen.
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
04.06.09 20:01 #3
- Registriert seit
- Dec 2007
- Beiträge
- 7
Peinlich peinlich. Danke für die Hilfe.
Ähnliche Themen
-
Programm start funktion in assembler
Von BassBox im Forum Sonstige SprachenAntworten: 0Letzter Beitrag: 07.11.10, 12:09 -
einfaches 3D Programm
Von hadimai im Forum Sonstige 3D-ProgrammeAntworten: 7Letzter Beitrag: 30.01.10, 06:10 -
VB6 Einfaches Programm
Von Cluee im Forum Visual Basic 6.0Antworten: 2Letzter Beitrag: 22.04.08, 13:18 -
[Assembler] Mein erstes Programm
Von Azi im Forum Sonstige SprachenAntworten: 4Letzter Beitrag: 02.11.05, 19:46 -
Einfaches c++ programm
Von Katzenbauer im Forum C/C++Antworten: 5Letzter Beitrag: 12.05.05, 13:36





Zitieren
Login





