Das Register wird vor der Aenderung gerettet.

push legt den Wert des Registers ganz oben auf den Stack. (google hilft)
Dann wird irgendwas mit dem Register gemacht, es bekommt einen neuen Wert. Dieser neue Wert wuerde jedoch das Hauptprogramm "verwirren".
Am Ende des Teilprogramms holt deshalb der Prozessor per pop den vorher gespeicherten Wert des Registers zurueck und versetzt das Register somit in den "Ausgangszustand".

Man soll seinen Arbeitsplatz ja immer so verlassen wie man ihn vorgefunden hat.