Vlajka pasti - Trap flag

Trap flag umožňuje provoz procesoru v jedno- kroku režimu. Pokud je takový příznak k dispozici, mohou ho debuggery použít k provedení procesu počítačového programu .

Jednostupňové přerušení

Když je systém instruován k jednostupňovému provedení, provede jednu instrukci a poté se zastaví. Lze zkoumat obsah registrů a paměťových míst; pokud jsou správné, lze systému říct, aby pokračoval a provedl další instrukci. Intel 8086 past vlajky a typ-1 přerušení reakce, aby bylo poměrně snadno implementovat funkce krokování v systému 8086 založeného. Pokud je nastaven příznak trapu, 8086 automaticky provede přerušení typu 1 po provedení každé instrukce. Když 8086 provede přerušení typu 1, posune registr příznaků v zásobníku .

Nastavení

8086 nemá žádné instrukce přímo nastavit nebo zrušit příznak pasti. Tyto operace se provádějí zatlačením na příznakový registr na zásobníku, změnou bitového příznaku pasti na to, co chce programátor, a následným vyjmutím příznakového registru zpět ze zásobníku. Pokyny pro nastavení příznaku pasti jsou:

PUSHF                   ; Push flags on stack
MOV BP,SP               ; Copy SP to BP for use as index
OR WORD PTR[BP+0],0100H ; Set TF flag
POPF                    ; Restore flag Register

Vlastně tímto způsobem nepoužíváte příznak Trap, protože obvykle monitorujete program z rutiny přerušení služby (ISR). Pokračujete v provádění programu pomocí IRET.

Int3ServiceRoutine:       ; Stack: Ret, Flags
  PUSHA                   ; Stack: Ret, Flags, AX, CX, DX, BX, SP, BP, SI, DI
  PUSH DS
  PUSH ES                 ; Stack: Ret, Flags, AX, CX, DX, BX, SP, BP, SI, DI, DS, ES

   ... the ISR code using only integer (otherwise you must also store floating point registers)

  MOV BP,SP               ; Stack: Ret, Flags, AX, CX, DX, BX, SP, BP, SI, DI, DS, ES
  MOV BP,[BP+10]          ; Stored SP
  OR WORD PTR[BP+0],0100H ; Set TF flag in the stored Flag register
  POP ES
  POP DS
  POPA
  IRET                    ; continue execution for ONE instruction, then calling ISR again.

Resetování

Chcete-li resetovat příznak trapu, jednoduše nahraďte instrukci OR v předchozím pořadí instrukcí:

AND WORD PTR [BP + 0], 0FEFFH

Příznak depeše se resetuje, když 8086 provede přerušení typu 1, takže jednokrokový režim bude během procedury přerušení služby deaktivován.

Stavový registr
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 (bitová pozice)
- - - - Ó D T S Z - A - P - C Vlajky