Hola mmonterei. ¿ A que te referis con: "me es imposible poner a cero el Flag correspondiente"?
Cuando una interrupcion configurada ocurre, el GIE (Global Interrupt Enable) el PC se carga con el valor 0x004 y el GIE se pone automaticamente a cero, para evitar otras interrupciones.
En este momento, por mas que nibble alto del PuertoB varie, la interrupcion no va a ocurrir, por lo que el programa se ejecuta hasta que TU nuevamente pongas en alto el bit de GIE.Saludos.
P.D. Recorda que el vector 0x0004 este muy cerca del vector de inicio de tu programa (aunque tu decides el vector de inicio, y si lo pusiste bien, no deberias tener problemas...
te recomiendo:
ORG 0X0000
GOTO INICIO
ORG 0x0004
GOTO INTERRUPCION
ORG 0x0005
INICIO ;inicio de la config y resto del programa
INTERRUPCION ;aca pone el codigo que analice cual interrupcion ocurrio, etc
RETFIE ; el PC se carga con el valor antes de qe ocurriera la interrupcion, y el programa se ejecuta normalmente hasta proxima interrupcion
Exitos. Bruno.