>> Tecnologia Eletrônica >  >> Sistemas de Posicionamento Global >> RFID

Flags DF e TF do 8086: Operações String e Debug Single-Step

Duas Flags Especiais no Registo FLAGS

Bit 10 = DF (Direction Flag), Bit 8 = TF (Trap Flag). Controlam direção de strings e tracing ao nível de instrução.

Direction Flag (DF)

  • DF = 0 (CLD): Instruções string auto-incrementam SI/DI (forward).
  • DF = 1 (STD): Instruções string auto-decrementam SI/DI (backward).
  • Instruções afetadas: MOVS, CMPS, SCAS, LODS, STOS, INS, OUTS (e prefixos REP).

Exemplo: Cópia Forward Depois Reverse

 ; Copia 10 bytes de src para dst (forward) cld ; DF=0 mov si, offset src mov di, offset dst mov cx, 10 rep movsb ; SI,DI incrementam ; Inverte string no local (backward) std ; DF=1 mov si, offset dst + 9 mov di, offset dst + 9 mov cx, 10 rep movsb ; SI,DI decrementam 

Trap Flag (TF)

  • TF = 0: Execução normal.
  • TF = 1: Após cada instrução, CPU gera INT 1 (Tipo 1) — exceção single-step.
  • Usada por debuggers (DEBUG, Turbo Debugger, WinDbg, GDB) para implementar "Step Into".
  • Definida via INT 3 (breakpoint) ou PUSHF / OR word ptr [sp], 100h / POPF.
  • Handler de interrupção pode examinar registos, memória, depois IRET para retomar.

Workflow Debugger

  1. Debugger define TF=1 no FLAGS guardado na stack.
  2. Código utilizador corre uma instrução.
  3. CPU faz push FLAGS/CS/IP, limpa TF, salta para handler INT 1 (debugger).
  4. Debugger lê estado registos, atualiza UI.
  5. Debugger restaura TF=1 no FLAGS guardado, IRET → próxima instrução.

Interação

  • DF e TF são independentes; ambos em FLAGS.
  • Instrução string com TF=1: cada iteração (cada MOVSB) dispara INT 1 — extremamente lento, mas permite inspeção por elemento.

Resumo

FlagBitInstrução para DefinirInstrução para LimparUso Principal
DF10STDCLDDireção string (SI/DI inc/dec)
TF8INT 3 / POPF com bitIRET (auto) / POPFDebug single-step