Algunas banderas se pueden fijar o despejar directamente con instrucciones específicas:
- CLC, STC y CMC: clara, set y complementan la bandera de acarreo
- CLI y STI: claro y establezca la interrupción bandera (que se debería hacer atómicamente)
- CLD y STD: clara y establecer el indicador de dirección
Para leer y escribir las banderas de signo, cero, acarreo auxiliar, paridad y acarreo, puede usar LAHF para cargar los 8 bits más bajos (esos 5 indicadores más 3 bits indeterminados) en el registro AH, y puede usar SAHF para almacenar esos valores de AH nuevamente en el registro de banderas.
También puede usar la instrucción PUSHF para insertar las banderas en la pila, leerlas y modificarlas en la pila, y luego usar la instrucción POPF para almacenarlas nuevamente en el registro de banderas.
Tenga en cuenta que no puede establecer los indicadores VM y RF con POPF, ya que conservan sus valores anteriores. De forma similar, solo puede cambiar el nivel de privilegio de E/S cuando se ejecuta en el nivel de privilegio 0, y el indicador de interrupción solo se puede cambiar cuando se ejecuta en un nivel de privilegio al menos tan privilegiado como el nivel de privilegio de E/S.
relacionadas: https://en.wikipedia.org/wiki/FLAGS_register tiene un mapa de qué bandera es donde después de 'pushf' o' lahf'. –