Assembler для начинающих

Динамик


      Внутри корпуса IBM PC есть маленький динамик. Программа может
    управлять звуками, генерируемыми этими динамиком. Для этого нужно
    управлять некоторыми выходными битами микросхемы 8255 и генератора
    тона в микросхеме 8253.
 
      На Фиг. 8.1 показана программа, которая управляет динамиком
    двумя разными способами. Первый способ, помеченный в листинге
    меткой DIRECT, непосредственно управляет динамиком. Бит 1 выводного
    порта 61H подключен к динамику. Всякий раз, когда программа меняет
    значение этого бита, диффузор динамика двигается либо наружу, либо
    внутрь. Быстро меняя значение этого бита, программа генерирует
    звук. Это иллюстрирует первая часть программы на Фиг. 8.1, она


    меняет значение бита 1, порождая высокочастотный тон. Скорость, с
    которой программа меняет бит 1, определяет частоту тона.
      Взяв на себя непосредственное управление динамиком, вы должны
           Microsoft (R) Macro Assembler Version 5.00                1/1/80 04:05:08
            Фиг. 8.1 Управление динамиком                       Page     1-1
 
                                          PAGE  ,132
                                          TITLE Фиг. 8.1 Управление динамиком
             0000                   STACK SEGMENT STACK
             0000  0040[                        DW    64 DUP (?)
                     ????
                               ]
             0080                   STACK ENDS
 
             0000                   CODE  SEGMENT
                                          ASSUME      CS:CODE
             0000                   SPEAKER PROC      FAR
             0000  1E                     PUSH  DS          ; Адрес возврата
             0001  B8 0000                      MOV   AX, 0
             0004  50                     PUSH  AX
 
                                    ;-----      Задание режима работы динамика
             0005  2B C9                        SUB   CX, CX            ; Счетчик цикла
             0007  E4 61                        IN    AL, 61H



Содержание раздела