Cuando estes trabajando en lenguaje ensamblador es una buena costumbre que: a la salida-retorno de una funcion-procedimiento todo salvo los datos que se querian modificar queden intactos.
Para ser claro la pila intacta porque en ocasiones se puede dar un uso muy variado y al mantener valores no esperados en ella se pueden dar errores de ejecución, por ejemplo: en la pila estaba la dirección de retorno al Main(). Al mantener un valor extraño ..."ups" la direccion no se corresponde ... "ups" la maquina ejecuta instrucciones incoherentes... "ups" maquina colgada. (generalmente no es para tanto pero ojo)