Estimado,
Para preservar el valor de los registros tenés que guardarlos en el stack al inicio de la rutina (PUSH) y luego recuperarlos desde el stack al finalizar (POP). En este caso, se debe acomodar los parámetros de retorno y el IP ANTES de realizar el POP que recupera el estado de los registros.
Si te quedan dudas, hay muchos exámenes y ejercicios de práctico que muestran esto.
Saludos,
Federico