program TIME; var Time : real; Mask : byte; Mode : byte; begin TextColor (LightGray); TextBackGround (Black); Mode := Port [$61]; (* текущий режим работы *) Port [$61] := Mode or $04; (* установка режима Turbo *) Mask := Port [$21]; (* маска аппаратных прерываний *) Port [$21] := $FF; (* запрет всех прерываний *) Port [$43] := $36; (* выбор канала 0 таймера: *) Port [$40] := $01; (* младший байт делителя *) Port [$40] := $00; (* старший байт делителя *) (*************************************) (* Фрагмент программы *) (*************************************) (* остановка счетчика и чтение результата *) Port [$43] := $00; Time := 65535.0 - (Port [$40] + Port [$40] * 256.0); Port [$43] := $36; (* восстановление канала *) Port [$40] := $00; (* 0 таймера: делитель = 0 *) Port [$40] := $00; Port [$21] := Mask; (* восстановление прерываний *) Port [$61] := Mode; (* восстановление исходного режима *) WriteLn ('Время прохода фрагмента кода = ', Time : 0 : 0); Halt (0) end. (* TIME *)
Вернуться к статье