Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
09_МУ9_Настройка и работа системы прерываний ПК...doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
136.7 Кб
Скачать

5 Порядок выполнения.

5.1 Исследовать генерацию звука через порт 61h (способ 1). 1. Загрузить отладчик Debug.

2. Прочитать содержимое регистров маски : 21h - главный контроллер,

A1h - подчиненный контроллер.

I 21

I A1

Пользуясь рис. 1 расшифровать содержимое регистров, результаты записать в отчет.

4. Установить маску на системный таймер не изменяя маски остальных источников прерываний. Код новой маски записать в отчет. Выйти из отладчика и убедиться, с помощью команды TIME, что системные часы остановлены.

5. Вернуться в отладчик.

6. Набрать, начиная с адреса 100, текст программы :

CLI

MOV CX , FFFF

L1: NOP

NOP

LOOP L1 ;при наборе вместо L1 установить фактический адрес

M : MOV AL , 0A ; команда управления

OUT 20 , AL

IN AL , 20 ;чтение регистра IRR

MOV BL , AL ; в BL содержимое регистра IRR

MOV AL , 0B

OUT 20 , AL

IN AL , 20 ;чтение регистра ISR

STI

L2: NOP ; установить контрольную точку останова

Программа позволяет читать внутренние регистры контроллера используя команду OСW1.

7. Установить контрольную точку останова на метке L2.

8. Многократно запуская программу по команде g100, фиксировать в отчете значения регистров IRR и ISR главного контроллера.

9. Установить в программе, в команде помеченной меткой М, режим опроса состояния контроллера.

CLI

M : MOV AL , 0С ; команда управления OCW3

OUT 20 , AL

IN AL , 20 ;чтение слова состояния

MOV BL,AL

RCL AL,1

JC M2:

JMP M:

M2: MOV AL , 0B

OUT 20 , AL

IN AL , 20 ;чтение регистра ISR

STI

L2: NOP ; установить контрольную точку останова

10. Запустить программу по команде g100, зафиксировать в отчете значения слова состояния и регистра ISR. При зависании машины выполнить перезагрузку и вернуться в Debug.

В отчете расшифровать содержимое регистров внутренних регистров IRR, ISR и слова состояния контроллера. Формат регистров IRR, ISR соответствует формату регистра маски.

11. Рассчитать адрес вектора прерывания системного таймера следуя формуле :

АДРЕС = номер прерывания ( см. рис. 1 ) * 4.

Записать в отчет адрес вектора и его содержимое. В окне дизассемблера найти точку входа в обработчик прерываний таймера и записать в отчет три первых команды обработчика прерываний системного таймера.

12. Рассчитать адрес вектора системного прерывания INT 1C. Записать в отчет адрес вектора и его содержимое. В окне дизассемблера найти точку входа в обработчик прерываний INT 1C и записать в отчет три первых команды обработчика.

13. Начиная с адреса 100 набрать текст пр-мы обработки прерываний таймера:

CLI

PUSHF

PUSH AX

CS:

ADD BYTE [30] , 1

MOV AL , 20

OUT 20 , AL

POP AX

POPF

IRET

В отчете привести функциональный комментарий к каждой из команд.

14. Замаскировать прерывание системного таймера.

15. Заменить вектор прерываний таймера на новый. Показать преподавателю.

16. Сбросить маску прерываний таймера.

17. Проконтролировать изменение содержимого ячейки CS:0030