Forum: Mikrocontroller und Digitale Elektronik 8051 Unterprogrammaufruf


von Thomas (Gast)


Lesenswert?

Hallo!

Die Stack-Adresse is ja beim Reset bekanntlich 07H...
Kann mir jemand sagen warum dann bei einem Unterprogrammaufruf "Call",
die Stackadresse um 2 angehoben wird...also 07H wird dann zu 09H??????

Danke

von Dirk H. (arm-dran)


Lesenswert?

CALL ist ein Unterprogrammaufruf.
Wenn Du diese Routine wieder mit RET verlässt, muß er ja wissen an 
welche
Adresse er zurückpringen muß.
Deswegen werden 2 Byte (16Bit Adresse) auf den Stack bei CALL gelegt und 
bei
RET wieder runtergeholt.

von Thomas (Gast)


Lesenswert?

Wieso 2 Bytes, das versteh ich nicht????
Könnte man doch mit einem genauso machen, oder???

von Günter R. (galileo14)


Lesenswert?

Thomas wrote:
> Wieso 2 Bytes, das versteh ich nicht????
> Könnte man doch mit einem genauso machen, oder???

Eine 16-Bit-Adresse (und so groß sind Adressen beim 8051 nun mal) 
besteht aus 2 Bytes, nicht aus einem. Und auf den Stack werden durch 
Call immer absolute Adressen gepusht, wie Dirk schon geschrieben hat.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.