Фрагмент ассемблерной программы В/В по прерыванию:
; Адреса, коды, константы, необходимые для программирования контроллера.
IRQ CHANNEL egu 0AH; номер линии запроса прерывания IRQ11;
int_num egu 73H; тип (номер) прерывания;
addr_mask 1 egu 21H; адрес рег. маски КПП 1;
addr_mask 2 egu 0a1H; адрес рег. маски КПП 2;
mask_cod egu 08H; код маски линии IRQ11;
addr_eoi 1 egu 20H; адрес рег. команды слова eoi КПП 1;
addr_eoi 2egu 0a0H; адрес рег. команды слова eoi КПП 2;
cod_eoi egu 20H; код команды eoi.
IntHandler proc
sti
; ввод/вывод данных без проверки готовности
; запись команды eoi в КПП
mov dx, addr_eoi 1
mov ax, cod_eoi
out dx, al
mov dx, addr_eoi 2
out dx, al
iret
IntHandler endp
; основная программа:
; инициализация модуля
; программирование таймера
; разрешение формирования запроса
; прерывания (аппаратными средствами модуля)
; установка вектора прерываний
mov al, int_num
lds dx, IntHandler; загрузить DS и DX полным адресом IntHandler
mov ah, 25 H; функция DOS
int 21 H; загрузка обработчика прерываний.
; демаскирование линии запроса прерываний;
mov bl, mask_cod
not bl
mov dx, addr_mask 2
in al, dx
and al, bl
out dx, al
mov dx, addr_mask 1
mov al, 0
out dx, al
; пуск АЦП
; проверка нажатия клавиши- цикл ожидания
; выход в DOS.
3.4.3. Ввод-выводврежимеПДП (Direct Memory Access)
Осуществляется под управлением системного контроллера ПДП (КПДП или ДМАС) без участия ЦП. В качестве КПДП используется 2 БИС 8237А-5, каждая из которых имеет 4 независимых канала; общее число каналов - 8.
Каналы 0…3 поддерживают обмен байтами, 4…7 - словами; каналы пользователя: 5, 6, 7.
Функции КПДП:
- принимает сигналы запроса ПДП DRQ;
- возвращает на шину сигналы подтверждения DACK, с помощью которых осуществляется выбор устройства;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.