La rutina guarda el contexto al comienzo y lo recupera al final. Efectivamente ese pop BX que marcaste con ** recupera el valor original que tenia BX cuando fue llamada la rutina (o sea, que luego de retornar del call, BX va a tener el mismo valor).
Mi consejo es que ejecutes "a mano" este programa para que puedas verificar todo esto.
Saludos,
Gustavo