| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Asm для начинающих > Издать Beep под BIOS |
| Автор: Hohhi 29.11.2009, 01:15 | ||
необходимо издать beep, используя только BIOS прерывание(я). Насколько я знаю 7ка в таблице ASCII соответствует звуковому сигналу. По непонятным мне причинам исполняя след код звука я не слышу.
Подскажите варианты решения задачи |
| Автор: spin2 29.11.2009, 02:05 |
| Hohhi, когда я учила асм и проигрывала сигналы ("в лесу родилась елочка"), нужно было еще частоту сигнала указывать... |
| Автор: 111u3 29.11.2009, 19:25 |
| spin2, частоту сигнала ты указывать будешь если тебе ее дадут где указать. Тут же просто издать звук с помощью ascii кода. |
| Автор: iff 30.11.2009, 15:06 | ||
| Я попробовал применить эту функцию 0ah прерывания 10h. Тоже ничего не получилось. Более того, у меня не получилось вывести на экран даже обычный символ (букву A). Я бы предложил использовать функцию 02h прерывания 21h. Ниже дан код программы, которая издаёт один звук.
|
| Автор: 111u3 30.11.2009, 17:04 |
| Гы, ну не знаю люди как вы умудряетесь так кодить. У меня что звуки, что сисмволы как через прерывания дос"а так и бсвв спокойно выводятся хоть под виндой, хоть под чем. Да и при отсутсвии ос тоже все прерывания биоса работают |
| Автор: iff 30.11.2009, 19:06 | ||
Ой, не внимательно прочитал первый пост. А там ведь написано, что нужно писать под BIOS, а это значит, что прерывание 21h использовать нельзя. Тогда можно попробовать это:
Этот код организует вывод на экран в режиме телетайпа. Как вы понимаете, этот код надо поставить вместо 4-6 строчек моего предыдущего листинга. 111u3, я делау так: в AsmTool набираю программу и компилирую TASM 4.1 в файл *.EXE Если набиру код из первого поста (предворительно введя все необходимые директивы, функцию завершения программы, и т.д.), то программа запускается, а звука нет. |
| Автор: Hohhi 30.11.2009, 20:04 | ||
iff, удивительно, но у меня и так не бипит. Может у меня с динамиком лажа конечно. Запустите кто-то у себя такой код:
|
| Автор: iff 30.11.2009, 20:39 |
| Запустил ваш код. Я так понял это программа типа COM. Я её откомпилировал и запустил. Она издала 1 звук и закрылось. Но если ее откомпилировать в EXE, то она работала странно: издавала 3 звука, а потом не завершало работу. Не совсем понял зачем в 10-ой строке инструкция ret. Я убрал эту инструкцию, а затем снова компилировал в EXE. Тогда программа зароботала нормально. |
| Автор: Hohhi 30.11.2009, 23:15 |
| iff, Спасибо, разобрался, суть уловил |
| Автор: 111u3 1.12.2009, 09:45 |
| iff, так у тебя звук будет издаватся через эмулятор терминала а при простом выводе символа этого не будет. При простом выводе символа он выведет это символ, а терминал обработает поступивший символ и если он совпадает с одним из кодов то исполнит дейтвие этого кода. |
| Автор: Mikl_ 1.12.2009, 13:56 |
| Hohhi, во вложении (исходник asm и готовый com) проигрывающий цирковой марш через системный динамик и программирование портов, используется 0-ая функция прерывание 1Ah для получения задержки в ~50 мсек |