Студопедия — Задержка программных операций
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Задержка программных операций






Программные задержки используются в тех случаях, когда в какой-либо точке программы надо приостановить её выполнение на некоторое время. По виду исполнения программные задержки делятся на два типа: задержки, реализуемые на основе выполнения программой " пустых" вложенных циклов, и задержки, реализуемые на основе системного таймера компьютера. В листинге 3.2 приведён пример реализации задержки первого типа.

Листинг 3.2. Программная задержка на основе выполнения вложенных циклов с командой Loop.

Proc delay; Подпрограмма задержки

Mov cx, N; N – счётчик внешнего цикла

Outer: push cx; Сохраним содержание счётчик внешнего цикла

Mov cx, 0; Обеспечим максимальное число повторений (64К раз)

; внутреннего цикла

Inner: loop Inner; Внутренний цикл

Pop cx; Восстановим содержание счётчик внешнего цикла

Loop Outer; Повторим вешний цикл N раз

Endp delay

В листинге 3.2 параметр N выполняет роль масштабного множителя времени задержки

tзад = N*t исполнения внутреннего цикла.

При этом наименьшей единицей времени (т.е. " тиком") является время выполнения внутреннего цикла, состоящего, в свою очередь, из времени исполнения 65535 раз команды Loop. Параметр N подбирается экспериментально для получения tзад (в мсек или сек) с учётом быстродействия конкретного компьютера.

Из рассмотрения данного примера очевидны недостатки данного подхода, когда требуется обеспечить выполнение временной задержки в программе, независимо от типа используемого компьютера. Поэтому разумно определять время программной задержки непосредственно по таймеру. Выходные сигналы таймера с частотой 18, 2 раза в секунду не зависят от производительности компьютера и играют роль счетчика суточного времени. Реализация данного способа использует функцию 00h прерывания BIOS Int 1Ah.

Int 1Аh, функция 00h. Чтение счетчика циклов таймера.

Обработчик прерывания BIOS от системного таймера (Int 8) подсчитывает количество прерываний (каждые 55 мсек или 18, 2 раза в секунду) в двойном слове памяти с адресом 0040h: 006Сh. Данная функция возвращает накопленное значение (двоичный код) и сбрасывает его в 0. В регистре AL возвращается 0, если содержимое счетчика не превысило значения, соответствующего 24 часам (при достижении этого значения счетчик сбрасывается), иначе возвращается AL = 1.

Вызов: АН = 00h.

Возврат: СХ: DX – число тактов системного времени от полуночи,

AL – флаг перехода через сутки.

Примеры возвращаемых значений в СХ: DX:

1 сек 12 h или 18,

1 минута 04 44 h или 1092,

1 час 1 00 07 h или 65543,

24 часа 18 00 B0 h или 1 573 040.

Для задержек меньших 14 секунд можно пользоваться только младшим байтом регистра DX

Листинг 3.3. B данном примере установлена задержка на 5 секунд, что соответствует 91 отсчету таймера

..........

mov ah, 0; Функция " чтения" циклов таймера

int 1Ah; Получаем значение счетчика циклов в cx: dx

add dx, 91; Добавляем 5 сек. к младшему слову в dx

mov bx, dx; Запоминаем требуемое значение в bx и выполняем

; постоянную проверку значений счетчика времени суток

repeat: int 1Ah; Вновь получаем значение счетчика

cmp dx, bx; Сравниваем с искомым

jne repeat; Если не равно, то повторяем снова,

; иначе задержка окончена

Если требуется введение задержки с высокой точностью, то необходимо использовать функцию 86h прерывания BIOS Int 15h. Она позволяет определить время задержки в микросекундах. Во время выполнения задержки разрешены прерывания. Управление программе возвращается после истечения заданного времени.







Дата добавления: 2014-11-10; просмотров: 963. Нарушение авторских прав; Мы поможем в написании вашей работы!



Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

Понятие массовых мероприятий, их виды Под массовыми мероприятиями следует понимать совокупность действий или явлений социальной жизни с участием большого количества граждан...

Тактика действий нарядов полиции по предупреждению и пресечению правонарушений при проведении массовых мероприятий К особенностям проведения массовых мероприятий и факторам, влияющим на охрану общественного порядка и обеспечение общественной безопасности, можно отнести значительное количество субъектов, принимающих участие в их подготовке и проведении...

Тактические действия нарядов полиции по предупреждению и пресечению групповых нарушений общественного порядка и массовых беспорядков В целях предупреждения разрастания групповых нарушений общественного порядка (далееГНОП) в массовые беспорядки подразделения (наряды) полиции осуществляют следующие мероприятия...

Ганглиоблокаторы. Классификация. Механизм действия. Фармакодинамика. Применение.Побочные эфффекты Никотинчувствительные холинорецепторы (н-холинорецепторы) в основном локализованы на постсинаптических мембранах в синапсах скелетной мускулатуры...

Шов первичный, первично отсроченный, вторичный (показания) В зависимости от времени и условий наложения выделяют швы: 1) первичные...

Предпосылки, условия и движущие силы психического развития Предпосылки –это факторы. Факторы психического развития –это ведущие детерминанты развития чел. К ним относят: среду...

Studopedia.info - Студопедия - 2014-2024 год . (0.011 сек.) русская версия | украинская версия