49056 (608889)

Файл №608889 49056 (Создание приложения, обеспечивающего генерацию звука с помощью системного таймера)49056 (608889)2016-07-30СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

АННОТАЦИЯ

Данная курсовая работа представляет собой приложение, обеспечивающее генерацию звука с помощью системного таймера.

Так как в настоящее время воспроизведение звука происходит посредством звуковых плат, обычный динамик PC практически никем не используется, поэтому главное его применение – звуковое сопровождение при выдаче сообщений об ошибках.

1. ИССЛЕДОВАТЕЛЬСКАЯ ЧАСТЬ

1.1 Исследование предметной области и постановка задачи

Целью данной курсовой работы является разработка приложения, которое может генерировать звук, используя системный таймер.

Для достижения данной цели необходимо реализовать ряд задач, а именно:

  • изучить принцип работы системного таймера

  • разработать алгоритмы для перехвата и обработки прерываний системного таймера

  • создать процедуру для извлечения очередного звука

  • создать процедуру для обработки символов, введенных с клавиатуры

1.2 Общие сведения о языке

Язык ассемблера - это символическое представление машинного языка. Все процессы в машине на самом низком, аппаратном уровне приводятся в действие только командами (инструкциями) машинного языка. Отсюда понятно, что, несмотря на общее название, язык ассемблера для каждого типа компьютера свой. Это касается и внешнего вида программ, написанных на ассемблере, и идей, отражением которых этот язык является.

Язык ассемблера был создан для облегчения написания программ на низком уровне. Вместо машинных команд программист использует мнемоники, которые представляют собой символическое представление машинной команды (или нескольких команд), что облегчает чтение текста программы. Так как одна мнемоника при трансляции преобразовывается в минимальное количество команд, то программы, написанные на ассемблере, выполняются с максимально возможной скоростью и занимают минимальный объём памяти. Именно поэтому программы на ассемблере (или ассемблерные вставки) используются там, где быстродействие является наиболее критичным фактором (обработка компьютерной графики, ядро операционных систем), или требуется максимально полно использовать возможности операционной системы (вирусы и антивирусы), или там, где эти два качества являются одинаково важными (драйверы различных устройств). Хорошим качеством Ассемблера является то, что он позволяет управлять действиями процессора поэтапно (по операциям) и с максимальной эффективностью. Ассемблер предоставляет программисту полную свободу действий при разработке программы, что одновременно является и его достоинством, и недостатком, так как требует от разработчика знания системы команд данного компьютера и его операционной системы. Данный язык позволяет программисту непосредственно работать со всем аппаратным обеспечением, что особенно важно при программировании устройств - ввода-вывода, где требуется контроль над отдельными разрядами регистров устройства. Ассемблер предоставляет возможность создания компактных и быстродействующих программ, оптимизации работы с аппаратными средствами. Синтаксис инструкций процессора предоставляет программисту широкий выбор типов данных: целые числа, строки знаков, упакованные десятичные числа, числа с плавающей точкой, структуры и записи. В языке имеется возможность подключения фрагментов исходного текста из других файлов. Ассемблер имеет набор макро-директив, использование которых позволяет относительно просто повторять общие блоки предложений несколько раз или заменять макро-имена в исходном тексте целыми последовательностями предложений.

1.3 Элементы языка

Для написания курсовой работы были использованы следующие средства языка:

  1. Команды пересылки данных

    • Команда MOV приемник, источник

Назначение: пересылка данных между регистрами или регистрами и памятью.

    • Команда XCHG операнд_1,операнд_2

Назначение: обмен двух значений между регистрами или между регистрами и памятью. Команду xchg можно использовать для выполнения операции обмена двух операндов с целью изменения порядка следования байт, слов, двойных слов или их временного сохранения в регистре или памяти.

    • Команда LEA приемник, источник

Назначение: получение эффективного адреса (смещения) источника. Алгоритм работы команды зависит от действующего режима адресации (use16 или use32):

если use16, то в регистр приемник загружается 16-битное значение смещения операнда источник;

если use32, то в регистр приемник загружается 32-битное значение смещения операнда источник.

    • Команда IN аккумулятор,ном_порта

Назначение: ввод значения из порта ввода-вывода. Передает байт, слово, двойное слово из порта ввода-вывода в один из регистров al/ax/eax

    • Команда OUT ном_порта,аккумулятор

Назначение: вывод значения в порт ввода-вывода. Передать байт, слово, двойное слово из регистра al/ax/eax в порт, номер которого определяется первым операндом.

    • Команда PUSHA

Назначение: размещение в стеке регистров общего назначения в следующей последовательности: ax, cx, dx, bx, sp, bp, si, di. Уменьшает значение указателя стека esp/sp на 32/16 (в зависимости от значения атрибута размера адреса - use16 или use32), включиет в стек последовательно значения регистров общего назначения ax, cx, dx, bx, sp, bp, si, di. Содержимое di при этом будет на вершине стека. В стек помещается содержимое sp по состоянию до выполнения команды.

    • Команда POPA

Назначение: извлечение из стека регистров общего назначения di, si, bp, sp, bx, dx, cx, ax. Извлекает из стека последовательно значения и загрузжает ими регистры общего назначения di, si, bp, sp, bx, dx, cx, ax. Содержимое di восстанавливается первым. Содержимое sp извлекается, но не восстанавливается. Увеличивает значение указателя стека esp/sp на 16.

  1. Арифметические команды

    • Команда INC операнд

Назначение: увеличение значения операнда в памяти или регистре на единицу.

  • Команда DEC операнд

Назначение: уменьшение значения операнда в памяти или регистре на единицу.

  1. Команды логической обработки данных

  • Команда AND приемник, источник

Назначение: операция логического умножения для операндов приемник и источник размерностью байт, слово или двойное слово. Выполняет операцию логического умножения над операндами источник и приемник: каждый бит результата равен 1, если соответствующие биты операндов равны 1, в остальных случаях бит результата равен 0.Результат операции записывается в приемник. Устанавливаются флаги.

  • Команда OR приемник, маска

Назначение: операция логического ИЛИ над битами операнда назначения, используя в качестве маски второй операнд - маска. При этом бит результата равен 0, если соответствующие биты операндов маска и назначения равны 0, в противном случае бит равен 1. Результат операции записывается в источник (маска неизменна). Устанавливаются флаги.

  • Команда XOR приемник, источник

Назначение: операция логического исключающего ИЛИ над двумя операндами размерностью байт, слово или двойное слово. Бит результата равен 1, если значения соответствующих битов операндов различны, в остальных случаях бит результата равен 0. Результат операции записывается в приемник. Устанавливаются флаги.

  • Команда TEST приемник, источник

Назначение: операция логического сравнения операндов приемник и источник размерностью байт, слово или двойное слово, при этом бит результата равен 1, если соответствующие биты операндов равны 1, в остальных случаях бит результата равен 0. Устанавливаются флаги.

  • Команда SHL операнд, количество_сдвигов

Назначение: логический сдвиг операнда влево. Происходит сдвиг всех битов операнда влево на один разряд, при этом выдвигаемый слева бит становится значением флага переноса cf, одновременно слева в операнд вдвигается нулевой бит. Указанные выше два действия повторяются количество раз, равное значению второго операнда.

  1. Команды передачи управления

  • Команда CMP операнд1,операнд2

Назначение: сравнение двух операндов. Выполняет вычитание (операнд1-операнд2). В зависимости от результата устанавливает флаги, операнд1 и операнд2 не изменяются

  • Команда JMP метка

Назначение: используется в программе для организации безусловного перехода как внутри текущего сегмента команд, так и за его пределы. При определенных условиях в защищенном режиме работы команда jmp может использоваться для переключения задач.

  1. Команда CALL цель

Назначение: передача управления близкой или дальней процедуре с запоминанием в стеке адреса точки возврата и переключение задач.

Команда call передает управление внешней процедуре, предварительно сохранив в стеке информацию для последующего возврата в вызывающую процедуру при помощи команды ret. Команда call имеет различную форму записи в зависимости от типа вызываемой процедуры (дальняя или ближняя). Команда ret, которой завершается вызываемая процедура, должна иметь тот же тип (дальний или ближний), что и вызывающая процедуру команда call. Адрес вызываемой процедуры может быть задан непосредственно в команде call, в памяти или в регистре.

  1. Команда RET

Назначение: возврат управления из процедуры вызывающей программе.

Команда ret возвращает управление из вызванной процедуры команде, следующей за командой call. Если возврат осуществляется из ближней процедуры, возврат является внутрисегментным (содержимое регистра CS остается неизменным). При возврате из дальней процедуры возврат является межсегментным (из стека восстанавливаются значения CS и IP). Если в команде задано необязательное значение, команда ret добавляет это значение к указателю стека SP. Это позволяет пропускать параметры, передаваемые через стек перед командой call.

  1. Команда IRET

Назначение: используется в той точке программы обработки прерывания, откуда необходимо вернуть управление прерванной программе. Команду iret необходимо применять для восстановления сохраненных командой int регистров флагов, указателя команд и сегментного регистра кода. Число этих команд в программе обработки прерывания должно соответствовать количеству точек выхода из нее.

  1. Команда прерываний INT число

Назначение: Вызов прерывания

INT помещает в стек содержимое регистров EFLAGS, CS и EIP, после чего передает управление программе, называемой «обработчик прерывания» с указанным в качестве операнда номером (число от 0 до 0FFh), аналогично команде call. В реальном режиме адреса обработчиков прерываний считываются из таблицы, начинающейся в памяти по адресу 0000h:0000h. Адрес каждого обработчика занимает 4 байта, так что, например, адрес обработчика прерывания 10h находится в памяти по адресу 0000h:0040h. В защищенном режиме адреса обработчиков прерываний находятся в таблице IDT и обычно недоступны для прямого чтения или записи, так что для установки собственного обработчика программа должна обращаться к операционной системе. В DOS вызовы прерываний используются для выполнения большинства системных функций - работы с файлами, вводом/выводом и т.д.

  1. Процедуры

Синтаксис описания процедуры:

имя_процедуры PROC [модификатор языка] [расстояние]

[имя_процедуры] ENDP

Процедура, часто называемая также подпрограммой, - это основная функциональная единица декомпозиции (разделения на несколько частей) некоторой задачи. Процедура представляет собой группу команд для решения конкретной подзадачи и обладает средствами получения управления из точки вызова задачи более высокого уровня и возврата управления в эту точку. В простейшем случае программа может состоять из одной процедуры. Другими словами, процедуру можно определить как правильным образом оформленную совокупность команд, которая, будучи однократно описана, при необходимости может быть вызвана в любом месте программы.

Среди большого количества операндов директивы PROC следует особо выделить [расстояние]. Этот атрибут может принимать значения near или far и характеризует возможность обращения к процедуре из другого сегмента кода. По умолчанию атрибут [расстояние] принимает значение near.

Процедура может размещаться в любом месте программы, но так, чтобы на нее случайным образом не попало управление. Если процедуру просто вставить в общий поток команд, то микропроцессор будет воспринимать команды процедуры как часть этого потока и соответственно будет осуществлять выполнение команд процедуры.

  1. Системный таймер

Таймеру соответствуют четыре порта ввода/вывода со следующими адресами:

  • 40h - канал 0;

  • 41h - канал 1;

  • 42h - канал 2;

  • 43h - управляющий регистр.

Одно из наиболее распространенных применений таймера - генерация звуковых сигналов и воспроизведение музыки. Таймер позволяет воспроизводить музыку в фоновом режиме, т.е. во время работы программы может звучать музыка.

Как мы уже говорили, канал 2 микросхемы 8254 связан с громкоговорителем компьютера. Однако громкоговоритель не просто соединен с выходом OUT канала 2. Порт вывода 61h также используется для управления громкоговорителем. Младший бит порта 61h подключен ко входу GATE канала 2 таймера. Этот бит при установке в 1 разрешает работу канала, т.е. генерацию импульсов для громкоговорителя.

Дополнительно для управления громкоговорителем используется бит 1 порта 61h. Если этот бит установлен в 1, импульсы от канала 2 таймера смогут проходить на громкоговоритель.

Таким образом, для включения звука надо выполнить следующие действия:

  • запрограммировать канал 2 таймера на нужную частоту (т.е. загрузить регистр счетчика канала нужным значением);

  • для включения звука установить в 1 два младших бита порта 61h.

Так как остальные 6 битов порта 61h используются для других целей, установка младших битов должна выполняться таким образом, чтобы значения остальных битов не были изменены. Для этого вначале надо считать байт из порта 61h в рабочую ячейку памяти, установить там нужные биты, затем вывести новое значение байта в порт 61h.

Очевидно, что для выключения звука надо сбросить два младших бита порта 61h в 0 (при этом нельзя изменять значение остальных битов этого порта).

Мелодия (одноголосая), как известно, состоит из нот, разделенных или не разделенных паузами. При проигрывании мелодии необходимо для каждой ноты программировать соответствующим образом канал 2 таймера и включать громкоговоритель (с помощью порта 61h) на определенное время, равное длительности ноты. Затем программа должна выключить динамик и выдержать паузу перед проигрыванием следующей ноты, если такая пауза требуется.

Характеристики

Тип файла
Документ
Размер
2,86 Mb
Тип материала
Учебное заведение
Неизвестно

Тип файла документ

Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.

Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.

Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.

Список файлов курсовой работы

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7029
Авторов
на СтудИзбе
260
Средний доход
с одного платного файла
Обучение Подробнее