
- •Министерство труда, занятости и трудовых ресурсов Новосибирской области
- •Разработал: а.А.Холин
- •1. Цели:
- •2 Оборудование, аппаратура, материалы, инструменты, документация.
- •3 Форма организации.
- •4 Инструктаж.
- •5 Порядок выполнения.
- •6. Методические рекомендации.
- •7. Форма отчета.
- •8. Контрольные вопросы.
- •9. Критерии оценки.
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