En el caso en que se involucren interrupciones, se utiliza CS como segmento para almacenar código y datos porque cuando ocurre la interrupción el único contexto conocido es el valor de los registros CS e IP. El registro DS va a tener el valor que tenia cuando se produjo la interrupción que no tiene por qué ser el que mapea la variable.
Es decir, las variables utilizadas por la interrupción se almacenan en el mismo segmentó donde está la propia rutina de interrupción, para de esta manera poder acceder a la variable. Esto normalmente se declara como directiva al ensamblador (no lo vemos en este curso; en este curso cuando hay interrupciones si declaras una variable en memoria ésta se asume que va al segmento de código).
Como toda variable global cualquiera puede sobreescribirla, no importa en qué segmento este ubicada.
Utilizar un registro para mantener la variable global en general es muy mal idea, porque ese registro pasaría a ser de uso exclusivo para esa variable (no podria usarlo en el código de main o subrutinas porque la interrupcion puede producirse en cualquier momento)
Saludos,
Gustavo