Speicher den Zustand des Zeroflags doch einfach in einer Variable.
also einfach den Test ändern:

movlw D'100'
subwf ADW_1,W
btfsc STATUS,Z
goto Test
MOVLW D'1'
MOVWF Flag
goto Test

Und in Test löschst du den Wert vom Flag erst nach einer zeit deiner Wahl. Das Problem ist scheinbar, dass die Messung damit zu schnell aufeinander folgen, bzw ihre Wirkung sofort eintritt. Du könntest eine Toleranz um den Zielwert nehmen, zb in dem du das niederwertigste Bit der Wandlung ignorierst, oder nicht bei 100 sondern in einem Bereich von 95 bis 105 auslöst.
Ich hoffe ich hab dein Problem richtig verstanden, sonst erläuter es bitte nochmal genauer.

P.S.: Das Zero-Flag bleibt so lange gesetzt, bis du es mit einer Operation wieder änderst, also ein Ergebnis oder Zwischenergebnis hast, dass das Z-Flag beeinflusst. Dh sobald der BSF PORTB,4 Befehl kommt und die Wartezeit vorbei ist, springst du ja wieder an den Anfang und löschst PORTB. In deiner Zählschleife wird wahrscheinlich das Z-Flag geändert, spätestens aber bei Haupt wieder gelöscht.

Bitte beschreib nochmal genau, was du machen möchtest, AD-Wert einlesen lassen, AD-Wert prüfen, ob er =100 ist, und wenn, dann den PB4 High, für wie lange? Wann soll er wieder gelöscht werden?