^—————————_-__-____-__———+
I Программа проверяет флаг трассировки ¦
I TF и выводит соответствующее сообщение \ +——.——————————________————————+;
Uses DOS;
var
Flags: Word; {Состояние флагов МП} begin
Flags := 0;
asm
pushf {Помещаем флаги в стек} pop ax {Извлекаем их в АХ} mov Flags,ax {Пересылаем в FLAGS}
end;
if (Flags and $100)=0 then WriteLn('Нет трассировки')
else
WriteLn('Есть трассировка') end.
Замер времени выполнения эталонного участка программы во многих случаях оказывается более эффективным средством обнаружения трассировки. Для получения отсчетов времени удобно использовать уже упоминавшийся системный счетчик $0000:$046С. Например:
^————————————————————————+
¦ Контроль трассировки с помощью замера \ ¦ времени выполнения участка программы \ +—————.——————————————————————+;
var
tl,t2: Longint;
begin
t2 := 0; {Сбрасываем счетчик}
tl := MemL[0:$046С]; {Получаем начальный момент времени}
while MemL[0:$046C]=tl do; {Ждем начала очередного
55-мс интервала} {Цикл измерения} while MemL[0:$046C]<tl+2 do inc(t2) ;
{Анализируем результат} if t2<500 then
WriteLn('Есть трассировка') else
WriteLn (t2) end.
Проверка
if t2<500 then