Собственно, такой вопрос. Например, есть какое-либо прерывание BIOS. Оно использует определенные регистры для входных параметров и определенные регистры для записи результата (если, конечно, он есть). Гарантируется ли то, что содержимое тех регистров, которые не используются для записи результата, после вызова прерывания останется неизменным (т.е. будет таким же, как до вызова прерывания) или это зависит от реализации ?
Остаются неизменными все сегментные регистры, si, di, bp, dx, bx (если не используются для возврата результатов). На некоторых биосах как минимум int 10h портит AX. Был случай из практики, когда изменялся CX (очень неприятно было обнаружить это при вызове прерывания внутри loop), но не помню, было ли это биос или дос-прерывание. На большинстве биосов регистры не изменяются вообще, кроме используемых для возвращения результатов, но с AX я бы подстраховался. Если мне не изменяет память, то в стандарте на биос гарантировано сохранение всех неиспользуемых регистров. То есть если некоторый регистр не служит ни для передачи данных в, ни для возврата результатов из прерывания, то его значение сохраняется. Остальное трактуется, по видимому, более широко - если регистр используется для передачи данных, то он может быть изменен.