Системное программное обеспечение. Рощин А.В. - 89 стр.

UptoLike

Составители: 

89
Адрес системного порта В – 61h, адреса каналов таймера – 40h, 41h,
42h, 43h – для каналов 0, 1, 2 и управляющего регистра соответственно.
Ниже рассмотрены примеры генерации звука с помощью сигнала бита 1
системного порта В, а также с помощью таймера. Рассмотрен случай
извлечения звука с использованием прерывания.
Примеры генерации звука
Задача 3.4.2.1. Написать программу, издающую различные звуки при
нажатии на
клавиши '1' и '2'. Для генерации звука следует использовать
сигнал бита 1 системного порта В. Выход из программы должен
осуществляться по нажатию клавиши 'q'.
Assume CS: Code, DS: Code
Code SEGMENT
org 100h
frequency1 equ 300 ; Задержка переключения 1
frequency2 equ 500 ; Задержка переключения 2
number_cycles1 equ 1000 ; Количество циклов (длит.)
number_cycles2 equ 600 ; Количество циклов (длит.)
port_b equ 61h ; Адрес системного порта В
.286
Start proc near
mov ax,cs
mov ds,ax ; DS = CS
beg1: call kbin ; Опрос клавиатуры
cmp al,'1' ; = '1' ?
jnz beg2 ; Нет
call ton1 ; Звук высоты 1
jmp beg1 ; Переход на начало цикла
beg2: cmp al,'2' ; = '2' ?
jnz beg3 ; Нет
call ton2 ; Звук высоты 2
jmp beg1 ; Переход на начало цикла
beg3: cmp al,'q' ; = 'q' ?
jnz beg1 ; Нет
int 20h ; Выход из программы
start endp
ton2 proc near ; Процедура генерации звука 2
mov dx,number_cycles2 ; Длительность 2
mov di,frequency2 ; Задержка 2
jmp ton0 ; Переход на
универсальную процедуру генерации звука
ton1 proc near ; Процедура генерации звука 1
mov dx,number_cycles1 ; Длительность 1
mov di,frequency1 ; Задержка 1
                                   89



      Адрес системного порта В – 61h, адреса каналов таймера – 40h, 41h,
42h, 43h – для каналов 0, 1, 2 и управляющего регистра соответственно.
Ниже рассмотрены примеры генерации звука с помощью сигнала бита 1
системного порта В, а также с помощью таймера. Рассмотрен случай
извлечения звука с использованием прерывания.

     Примеры генерации звука

     Задача 3.4.2.1. Написать программу, издающую различные звуки при
нажатии на клавиши '1' и '2'. Для генерации звука следует использовать
сигнал бита 1 системного порта В. Выход из программы должен
осуществляться по нажатию клавиши 'q'.

Assume CS: Code, DS: Code
Code SEGMENT
      org 100h
frequency1       equ 300 ; Задержка переключения 1
frequency2       equ 500 ; Задержка переключения 2
number_cycles1 equ 1000 ; Количество циклов (длит.)
number_cycles2 equ 600 ; Количество циклов (длит.)
port_b           equ 61h ; Адрес системного порта В
      .286
Start proc near
      mov ax,cs
      mov ds,ax ; DS = CS
beg1: call kbin ; Опрос клавиатуры
      cmp al,'1' ; = '1' ?
      jnz beg2 ; Нет
      call ton1 ; Звук высоты 1
      jmp beg1 ; Переход на начало цикла
beg2: cmp al,'2' ; = '2' ?
      jnz beg3 ; Нет
      call ton2 ; Звук высоты 2
      jmp beg1 ; Переход на начало цикла
beg3: cmp al,'q' ; = 'q' ?
      jnz beg1 ; Нет
      int  20h ; Выход из программы
start endp
ton2 proc near ; Процедура генерации звука 2
      mov dx,number_cycles2     ; Длительность 2
      mov di,frequency2         ; Задержка 2
      jmp ton0 ; Переход на универсальную процедуру генерации звука
ton1 proc near ; Процедура генерации звука 1
      mov dx,number_cycles1     ; Длительность 1
      mov di,frequency1         ; Задержка 1