Методические указания по лабораторным работам по курсу «Аппаратные средства компьютерных систем», страница 30

       MOV CX, n

       spkr: LOOP spkr

В приведенном фрагменте n — число, при котором цикл исполняется требуемое время. Методика расчета приведена в [1]. Для генерации паузы в микросекундах и выше этот метод не пригоден и лучше использовать системный таймер, как будет показано дальше.

freq   DB    1000     ;Частота в Гц

cycles DW    100      ;Длительность

       . . .

       MOV   BX,cycles

       MOV   DI,freq

       MOV   AL,0B6H  ;Записать в регистр режим таймера

       OUT   43H,AL

       MOV   DX,12H   ;Делитель времени =

       MOV   AX,2870H ;1190000/частота

       DIV   DI

       OUT   42H,AL   ;Записать младший байт счетчика таймера 2

       MOV   AL,AH

       OUT   42H,AL   ;Записать старший байт счетчика таймера 2

       IN    AL,61H   ;Считать текущую установку порта 61Н

       MOV   AH,AL    ;и сохранить ее в регистре AH

       OR    AL,3     ;Включить динамик

       OUT   61H,AL

expect: MOV  CX,2801  ;Выждать

spkr:  LOOP  spkr

       DEC   BX       ;Счетчик длительности исчерпан ?

       JNZ   expect   ;НЕТ - продолжить звучание

       MOV   AL,AH    ;ДА - восстановить исходную

       OUT   61H,AL   ;установку порта

Рисунок 4.4

Комбинируя два метода управления динамиком, можно добиться различных звуковых эффектов.

Далее рассматриваются методы организации и подсчета временных интервалов для различных прикладных целей. Как отмечено выше, канал 0 таймера используется для генерирования аппаратных прерываний по таймеру с вектором INT 8h. С помощью прерывания BIOS 1Ah можно прочитать или изменить содержимое счетчика (табл. 4.2). Номер функции передается через регистр AH.

Для определения времени выполнения какой-либо операции или программы берется начальное показание счетчика времени, который сравнивается с показанием счетчика после завершения операции. На рисунке 4.5 показан пример измерения промежутка времени в пределах часа. При этом используются только 2 младших байта счетчика. При этом необходимо учитывать возможность перехода через границу (начальное значение счетчика превысит конечное).

Таблица 4.2 ¾ Использование прерывания 1Ah