Реферат: Вектор переривань та процедура обслуговування переривань
error:cmp AX,1; Аналіз коду завершення
je err1
cmp AX2
je err
...
Аналогічно викликаються і функції BIOS.
Задача на звуковий сигнал
У найпростішому випадку в IBM PC для генерації звуку використовується мікросхема інтегрального таймера 8253 або 8254. Ця мікросхема має три незалежні канали, кожний з яких може програмуватися для роботи в режимі поділювача частоти або генератора одиночних імпульсів. Кожен канал містить 16-розрядний лічильник, в який записується значення дільника частоти або коефіцієнта перерахунку (залежно від режиму роботи). Кожен канал має вхід частоти (clk) і вхід дозволу (gate). На вхід частоти всіх каналів подається імпульсний сигнал частотою 1,19 Мгц. Канал 0 мікросхеми таймера використовується для вироблення сигналу переривання по таймеру (частотою 18,2 Гц). Канал 1 працює в режиму генерації одиночних імпульсів через кожні 15 мкс. Цей сигнал використовується для регенерації динамічної пам'яті ЕОМ.
Канал 2 мікросхеми початково програмується для роботи в режимі дільника частоти. Вихід каналу використовується для генерації звуку через вбудований динамік. Для управління звуком використовуються біти 0 і 1 системного порту В (мікросхема 8255). Біт 0 використовується для дозволу проходження сигналу на вихід каналу 2 таймера. Сигнал з виходу каналу 2 подається на схему "І", на другий вхід який подається сигнал біта 1 системного порту В. Цей сигнал може вирішувати або забороняти проходження сигналу з виходу каналу 2 таймера, а при закритому каналі 2 (бітом 0 порту В) сигнал біта 1 порту В може використовуватися для безпосередньої генерації звуку в динаміку.
Адреса системного порту В - 61h, адреси каналів таймера - 40h, 41h, 42h, 43h - для каналів 0, 1, 2 і регістра, що управляє, відповідно. Нижче розглянуті приклади генерації звуку за допомогою сигналу біта 1 системного порту В, а також за допомогою таймера. Розглянутий випадок генерації звуку з використанням переривання.
Приклади генерації звуку
Завдання 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 ; ͳ
callton1 ; Звуквисоти 1
jmp beg1 ; Перехіднапочаток циклу
beg2: cmp al,'2' ; = '2' ?
jnz beg3 ; ͳ