"Роберт Джордайн. Справочное пособие программиста - 2 (ассемблер, операционная система MS DOS)" - читать интересную книгу автора MOV CX,ALARMCOUNT ;берем требуемое значение
CMP DX,CX ;сравниваем с текущим JNE NOT_YET ;если неравны, то на выход ;---выдаем звуковой сигнал, если значения совпали CALL BEEP ;эта процедура не показана ;---иначе возвращаемся из прерывания NOT_YET: POP DX ;восстанавливаем регистры POP CX POP AX IRET ;возврат из прерывания ALARM ENDP ;конец процедуры .h3 2.1.8 Генерация случайных чисел с помощью микросхемы таймера. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Для генерации последовательности случайных чисел требуются сложные математические манипуляции. Но иногда программе в опреде- ленный момент требуется только одно случайное число. В этом слу- чае случайное число может быть получено просто чтением из канала микросхемы таймера. Бейсик использует это число в качестве ядра, по которому генерируется случайная последовательность. Конечно, в качестве случайной последовательности, так как сами по себе интервалы времени между считываниями будут неслучайными. 100 RANDOMIZE TIMER 'сброс генератора случайных чисел 110 PRINT RND,RND,RND 'печать трех случайных чисел в результате получаем: .7122483 .4695052 .9132487 Низкий уровень. Поскольку регистр счетчика канала таймера перезагружается снова и снова данным числом (а в промежутках идет счет вниз до 0), выберите в качестве загружаемого в счетчик значения число, равное требуемому диапазону случайных чисел. Например, для полу- чения случайного значения часа дня загружайте в счетчик 23. Лучше всего использовать режим 3 канала 2 (порт 42H) микросхе- мы таймера [2.1.1]. Сначала установите для счетчика желаемый диапазон случайных чисел (в примере используется 10000, что при- водит к выдаче случайного числа в диапазоне от 0 до 9999). Затем, чтобы получить из канала случайное число, надо подать команду командному регистру микросхемы таймера через порт 43H перенести текущее значение счетчика в регистр "задвижки", для чего надо сбросить биты 4 и 5. Этот перенос в регистр задвижки не мешает продолжающемуся счету. Затем установите оба бита 4 и 5 командного |
|
|