Хм, а мож надо перед вызовом сохранить BC и HL в стеке, а после восстановить?