Los flags o banderas son registros de estado. Los Z, DC, RP0 y C. Por lo que se, cambia depende del estado de una acción y te vale para ejecutar otra acción. Por ejemplo: Algo parecido a un If else. Si Z es distinto a 0, salta a goto, si es = a 0, sigue con la instrucción. Cosas así. En un libro lo tengo detallado y la verdad es mucho para escribirlo aquí.
EDIT: Voy a poner literalmente lo que dice el libro, solo un cacho.
El registro de estado o Status indica el estado de la última operación aritmética o lógica realizada, la causa de reset y los bit de selección de banco para la memoria de datos. A los bit de registro de estado se les suele denominar flags o banderas. Al conectar la alimentación su contenido STATUS = b'00011xxx'
Z (Zero). Flag de cero. Se activa a 1 cuando el resultado de una operación aritmética o lógica es 0.
- Z = 0. El resultado de la última operación ha sido distinto de cero.
- Z = 1. El resultado de la última operación ha sido cero.
Hay más como DC, C, /PD, TO, RP0, al menos en el 16F84A
Ojalá te ayude algo, menos mal que me compré el libro que me ayuda a empezar.