Флаг ловушки - Trap flag
Эта статья написано как руководство или путеводитель.Февраль 2016 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Эта статья не цитировать любой источники.Сентябрь 2011 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
А флаг ловушки разрешает эксплуатацию процессор в одно-шаг режим. Если такой флаг имеется, отладчики можно использовать его для пошагового выполнения компьютерная программа.
Одношаговое прерывание
Когда система получает указание на пошаговое выполнение, она выполняет одну инструкцию и затем останавливается. Можно проверить содержимое регистров и ячеек памяти; если они верны, системе можно дать команду продолжить выполнение следующей инструкции. В 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, поэтому пошаговый режим будет отключен во время процедуры обслуживания прерывания.
|