Kann sein, dass der noch was auf den Stack packt? Kannst nach dem Funktionsaufruf was ausgeben, und schauen, ob das dann angezeigt wird?
Man sollte vielleicht auch in der Funktion mal was machen, was man kontrollieren kann. Z.B. einen Wert in eine Speicheradresse schreiben, damit man sieht, ob das gemacht wurde.
Der Pointer auf zahl zeigt ja am Anfang _irgendwo_ hin und dort schreibt man dann 15 rein. Das kann so nicht gut sein.
Vielleicht besser mal eine int Variable erzeugen und die dann an die Funktion übergeben?
void main(int argc, char *argv[]) {
int zahl=15;
werte(zahl);
}
Und im nächsten Schritt einen Pointer nehmen, und ne Änderung machen, die man überprüfen kann.
Z.B. so:
char test=0; // sollte test als volatile deklariert sein?
char *p = &test;
werte(p);
und in werte dann z.B. eine 1 in den Speicher schreiben, auf den p zeigt:
void werte(xyz)
char *xyz;
{
Bitte melde dich an, um diesen Link zu sehen.
pop de ; save return address
pop hl ; fetch xyz
ld a.1
LD (hl),a ; *p=1; also sollte test jetzt 1 sein
push hl ; restore stack
push de ; push return address
Bitte melde dich an, um diesen Link zu sehen.
}
Jetzt sollte test eigentlich 1 sein, und man könnte das ausgeben, um zu schauen, ob das stimmt?