mov [bp+4], ax
Donde se asume que bp = sp cosa que no es cierta dado que pudo haber una llamada recursiva antes (la llamada recursiva altera su valor).
Es correcto, hay un error ahí. Si no lo corrí mal mentalmente se corrige fácilmente agregando, luego del 'pop ax' en la llamada recursiva, nuevamente.
mov bp, sp
Voy a pedir una segunda opinión y ver de agregarlo a la solución, gracias por señalarlo!
Saludos,
Federico
Quedó actualizada la solución.
Saludos,
Federico