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

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