Por si alguien tenia las dudas respuestas que me dieron en Consulta:
1) el && considera TRUE todo lo que no es 0, lo correcto es usar un solo & con la mascara
2) Siempre conviene guardarlos, pero en interrupciones es OBLIGATORIO guardarlo
3) Es necesario pasarlo por el hecho de que IN y OUT no aceptan inmediatos de 16 bits (aunque la cartilla no especifica eso) y por eso lo pasan antes al registro DX.