Hallo,

das Retten des W- und Status Registers wird hauptsächlich in der Interrupt Routine benutzt. Ich habe es aber selbst erlebt und auch bei anderen festgestellt, dass es bei Unterprogrammen, die oft aufgerufen werden, sinnvoll sein kann, diese Register zu retten. Wenn Du Dir die Zeitschleife mal anschaust, dann findest Du dort Befehle, die das W-Register überschreiben. Außerdem wird das Statusregister verändert, wenn das Zählregister auf 0 steht (Zero-Bit).

Beispiel:
Falls Du die Zeitschleife aus dem Hauptprogramm aufrufst, und vor dem CALL-Befehl einen Wert im W-Register stehen hast, den Du nach der Zeitschleife noch weiterverwenden willst, dann wird dieser ohne das Retten überschrieben. Natürlich kann man diesen Wert auch in einem anderen Register zwischenspeichern, aber das wird gerne vergessen. Rettet man diese Register, dann braucht man sich darüber keine Gedanken zu machen, denn die Werte sind nach dem UP genauso, wie davor.

Informationen dazu findest Du im Bereich "Interrupt"

http://sprut.de/electronic/pic/falle...html#interrupt


Fazit: Das Register retten ist bei Unterprogrammen nicht notwendig. Man muss jedoch dann wissen, was nach dem Unterprogramm mit dem W-Register und dem Status-Register passiert. Deshalb hatte ich geschrieben: Es kann notwendig sein, diese Register zu retten.

Falls Du es benutzt, dann müssen die Register am Anfang des Unterprogrammes gerettet und vor dem Verlassen wieder hergestellt werden.

So, ich hoffe das war verständlich. Eventualitäten lassen sich nicht leicht erklären.