^—————————_-__-____-__———+

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