Флаг ловушки - Trap flag

А флаг ловушки разрешает эксплуатацию процессор в одно-шаг режим. Если такой флаг имеется, отладчики можно использовать его для пошагового выполнения компьютерная программа.

Одношаговое прерывание

Когда система получает указание на пошаговое выполнение, она выполняет одну инструкцию и затем останавливается. Можно проверить содержимое регистров и ячеек памяти; если они верны, системе можно дать команду продолжить выполнение следующей инструкции. В Intel 8086 флаг ловушки и тип-1 прерывать response упрощает реализацию одношаговой функции в системе на базе 8086. Если установлен флаг прерывания, 8086 автоматически выполнит прерывание типа 1 после выполнения каждой инструкции. Когда 8086 выполняет прерывание типа 1, он помещает регистр флага в куча.

Параметр

В 8086 не имеет инструкции напрямую установить или сбросить флаг прерывания. Эти операции выполняются путем помещения регистра флага в стек, изменения бита флага ловушки на то, что программист хочет, а затем выталкивания регистра флага обратно из стека. Инструкции по установке флага ловушки:

PUSHF                   ; Помещать флаги в стекМОВ БП, ИП               ; Скопируйте SP в BP для использования в качестве индексаOR WORD PTR [BP + 0], 0100H ; Установить флаг TFPOPF                    ; Восстановить регистр флага

На самом деле вы не используете флаг Trap таким образом, потому что вы обычно контролируете программу из ISR. Вы продолжаете выполнение программы IRET.

Int3ServiceRoutine:; Стек: Ret, Флаги  ПУША                   ; Стек: Ret, Flags, AX, CX, DX, BX, SP, BP, SI, DI.  PUSH DS  НАЖАТЬ ES                 ; Стек: Ret, Flags, AX, CX, DX, BX, SP, BP, SI, DI, DS, ES   ... код ISR используя только целое число (в противном случае вы также должны хранить регистры с плавающей запятой) МОВ БП, ИП               ; Стек: Ret, Flags, AX, CX, DX, BX, SP, BP, SI, DI, DS, ES  MOV BP, [BP + 10]          ; Сохраненный SP  OR WORD PTR [BP + 0], 0100H ; Установить флаг TF в сохраненном регистре флагов  POP ES  POP DS  ПОПА  IRET                    ; продолжить выполнение ОДНОЙ инструкции, затем снова вызвать ISR.

Сброс

Чтобы сбросить флаг прерывания, просто замените инструкцию OR в предыдущей последовательности инструкцией:

AND WORD PTR [BP + 0], 0FEFFH

Флаг ловушки сбрасывается, когда 8086 выполняет прерывание типа 1, поэтому пошаговый режим будет отключен во время процедуры обслуживания прерывания.

Регистр статуса
1514131211109876543210(битовая позиция)
----ОDяТSZ-А-п-CФлаги