^—————————_-__-____-__———+
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