;--- Получение значения счетчика и установка задержки
MOV AH,0 ;Номер функции чтения "счетчика тиков"
INT 1AH
ADD DX,91 ;Добавляем требуемое число отсчетов
MOV BX,DX ;Запоминаем требуемое значение в BX
;--- Проверка значения счетчика времени суток BIOS
next: INT 1AH ;Получаем новое значение счетчика
CMP DX,BX ;Сравниваем с требуемым
JNGE next ;Если не равен, то повторяем снова
quit:
Рисунок 4.6
Прерывание 1Ah может быть использовано для генерации случайных чисел. Так как значения ячеек счетчика времени постоянно изменяются, то они могут интерпретироваться как псевдослучайные числа.
Для генерации случайного числа в интервале от 0 до N надо прочитать текущее значение счетчика (или одной из его ячеек) и разделить его на N. Тем самым получится остаток в интервале от 0 до N-1. На рисунке 4.7 показан пример получения случайного числа в диапазоне от 0 до 60. Следует обратить внимание, что во избежание переполнения обнуляются три старших бита младшего байта счетчика времени, иначе деление вызывало бы переполнение всякий раз, когда содержимое этого байта превышало бы число 15555, т.е. 61*255.
limit DB 61
MOV AH,0 ;Считать показания таймера
INT 1AH
MOV AX,DX ;Переместить младшую часть счетчика
AND AX,1FFFH ;и удалить из него старшие 3 бита
MOV DL,limit ;Разделить младшую часть счетчика
DIV DL ;на limit
Рисунок 4.7
Персональный компьютер, совместимый с IBM PC AT, работающий под управлением ОС MS-DOS.
Инструментальные программные средства пакета Turbo Assembler фирмы Borland: компилятор tasm.exe, компоновщик tlink.exe, отладчик td.exe.
Порядок выполнения работы соответствует приведенному в разделе «Общие положения».
При разработке программы под стек следует отводить не менее 64 слов. Для вывода на экран чисел рекомендуется использовать процедуру BinASCII, которая преобразует двоичное 16-разрядное число в ASCII-коды и выдает их на экран. Преобразуемое число передается в процедуру через регистр AX. После завершения работы процедуры значения всех регистров сохраняются. При этом не следует забывать о вставке оператора EXTRN BinASCII:FAR в основной процедуре.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.