"Роберт Джордайн. Справочное пособие программиста - 2 (ассемблер, операционная система MS DOS)" - читать интересную книгу автора

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

;---установка адресов портов
COMMAND_REG EQU 43H ;адрес командного регистра
CHANNEL_2 EQU 42H ;адрес канала 2
CALL SET_COUNT ;установка диапазона
.
;---здесь программа работает, а затем требует случайное число
.
CALL GET_NUMBER ;получение случайного числа
.
.
;---начинаем отсчет канала 2

SET_COUNT PROC
MOV AL,10 11 011 0B ;канал 2,оба байта, режим 3,дв.сч.
OUT COMMAND_REG,AL ;посылаем в командный регистр
MOV AX,10000 ;значение счетчика
OUT CHANNEL_2,AL ;посылаем младший байт
MOV AL,AH ;передвигаем старший байт в AL
OUT CHANNEL_2,AL ;посылаем старший байт
RET
SET_COUNT ENDP

;---получение случайного числа
READ_NUMBER PROC

;---пересылаем значение счетчика в регистр задвижки
MOV AL,10000110B ;требуемая команда
OUT COMMAND_REG,AL ;посылаем в командный регистр

;---читаем значение счетчика
MOV AL,10110110B ;запрос на чтение/запись
OUT COMMAND_REG,AL ;посылаем запрос
IN AL,CHANNEL_2 ;получаем младший байт
MOV AH,AL ;временно храним его в AH
IN AL,CHANNEL_2 ;получаем старший байт
CALL SET_COUNT ;восстанавливаем задвижку
XCHG AH,AL ;ставим байты на место
RET ;теперь случайное число в AX
READ_NUMBER ENDP


.h2 Раздел 2. Создание звука.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~