
Лабораторные работы / 9091_Боброва_лаб_3
.docxМИНОБРНАУКИ РОССИИ
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
«ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА)
ОТЧЕТ
по лабораторной работе №1 по дисциплине «Системное программирование»
Тема: «Программирование системных часов и управление звуком»
Студентка гр. 9091 Боброва Н.Ю.
Преподаватель Кораблев Ю.А.
Санкт-Петербург
2024
Цель работы:
Изучить способы программирования системных часов ПЭВМ. Освоить программное управление звуком.
Исследование 1 способа генерации звука
Установить бит 0/порт 61h =0. В этом случае на выходе OUT2 канала 2 установится логическая 1. Генерация осуществляется циклическим изменением значения Бит 1/ порт 61h. Частота звука зависит от длительности цикла. Следующий фрагмент программы реализует данный способ:
MOV DX, FFFF
103: MOV AL, 32
OUT [61], AL
MOV CX, FFFF ; ИНТЕРВАЛ Т1
10A: LOOP 10A
MOV AL , 30
OUT [61], AL
MOV CX, FFFF ; ИНТЕРВАЛ Т2
113: LOOP 113
DEC DX
JNZ 103
Во время работы программы мы слышали звук от системного динамика компьютера. Динамик работал 2.5 сек. А так как DX = FFFF (в шестнадцатеричной системе) = 65536 (в десятичной системе счисления). Посчитаем период сигнала T= 2.5/ 65536 = 3.815 * 10 ^ -5, от сюда частота сигнала была = 2.62 * 10^4 гц.
Исследование 2 способа генерации звука
Запустим программу генерации звука по 2 способу
MOV AL, B6
OUT [43], AL
MOV AX, 3FFFF : ОПРЕДЕЛЯЕМ ПЕРИОД СИГНАЛА
OUT [42], AL
MOV AL, AH
OUT [42], AL
IN AL, [61]
OR AL, 3
OUT [61], AL : ЗВУК ВКЛ
IN AL, [61]
AND AL, FC
OUT [61], AL : ЗВУК ВЫКЛ
Меняя период сигнала, мы смогли определить примерную верхнюю границу нашего слуха. Это около AX= 49.
Исследование 3 способа генерации звука
В данном способе мы поменяем системное прерывание таймера, и в новом прерывании добавим обработку звука.
MOV AX , 0
MOV ES , AX
MOV AX , 12D
CLI
MOV ES:[70], AX ; установка нового вектора
MOV AX , CS ; прерывания 1Ch
MOV ES:[72],AX
STI
MOV BX , 7FFF ; в ВХ начальное значение счетчика
117: CALL 11E ; установка нового значения счетчика
SHR BX , 1 ; логический сдвиг вправо
JMP 117 ; В1 - точка останова
11E: MOV AL , 36 ; Подпрограмма устанавливает начальное
CLI ; значение канала счетчика 0 таймера
OUT [43] , AL ; устанавливаемое значение в регистре ВХ
MOV AX , BX
OUT [40] , AL
MOV AL , AH
OUT [40] , AL
STI
RET
12B: IN AL , [61] ; Пользовательская подпрограмма обработки
XOR AL , 02 ; прерываний системных часов
OUT [61] , AL
IRET
В ходе работы программы мы получили изменяющийся по частоте звук.