![]() |
|
|
![]()
|
|
| Hohhi |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 25.2.2006 Где: Молдова Репутация: нет Всего: нет |
необходимо издать beep, используя только BIOS прерывание(я). Насколько я знаю 7ка в таблице ASCII соответствует звуковому сигналу. По непонятным мне причинам исполняя след код звука я не слышу.
Подскажите варианты решения задачи |
|||
|
||||
| spin2 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 15.12.2005 Где: Москва-Одесса Репутация: нет Всего: 31 |
Hohhi, когда я учила асм и проигрывала сигналы ("в лесу родилась елочка"), нужно было еще частоту сигнала указывать...
-------------------- |
|||
|
||||
| 111u3 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 31.8.2009 Где: Омск Репутация: нет Всего: нет |
spin2, частоту сигнала ты указывать будешь если тебе ее дадут где указать. Тут же просто издать звук с помощью ascii кода.
|
|||
|
||||
| iff |
|
|||
![]() Администратор ![]() ![]() Профиль Группа: Участник Сообщений: 949 Регистрация: 23.3.2007 Репутация: 4 Всего: 16 |
Я попробовал применить эту функцию 0ah прерывания 10h. Тоже ничего не получилось. Более того, у меня не получилось вывести на экран даже обычный символ (букву A).
Я бы предложил использовать функцию 02h прерывания 21h. Ниже дан код программы, которая издаёт один звук.
-------------------- DOS... Синей пеленой экран заполнил чистый DOS Мышь... Стала вдруг квадратной, потеряла форму мышь... Я разбил окно, девяностопятое мастдайное окно, И поставил DOS, и тогда увидел: Это счастье, — вот оно. |
|||
|
||||
| 111u3 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 31.8.2009 Где: Омск Репутация: нет Всего: нет |
Гы, ну не знаю люди как вы умудряетесь так кодить. У меня что звуки, что сисмволы как через прерывания дос"а так и бсвв спокойно выводятся хоть под виндой, хоть под чем. Да и при отсутсвии ос тоже все прерывания биоса работают
|
|||
|
||||
| iff |
|
|||
![]() Администратор ![]() ![]() Профиль Группа: Участник Сообщений: 949 Регистрация: 23.3.2007 Репутация: 4 Всего: 16 |
Ой, не внимательно прочитал первый пост. А там ведь написано, что нужно писать под BIOS, а это значит, что прерывание 21h использовать нельзя. Тогда можно попробовать это:
Этот код организует вывод на экран в режиме телетайпа. Как вы понимаете, этот код надо поставить вместо 4-6 строчек моего предыдущего листинга. 111u3, я делау так: в AsmTool набираю программу и компилирую TASM 4.1 в файл *.EXE Если набиру код из первого поста (предворительно введя все необходимые директивы, функцию завершения программы, и т.д.), то программа запускается, а звука нет. -------------------- DOS... Синей пеленой экран заполнил чистый DOS Мышь... Стала вдруг квадратной, потеряла форму мышь... Я разбил окно, девяностопятое мастдайное окно, И поставил DOS, и тогда увидел: Это счастье, — вот оно. |
|||
|
||||
| Hohhi |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 25.2.2006 Где: Молдова Репутация: нет Всего: нет |
iff, удивительно, но у меня и так не бипит. Может у меня с динамиком лажа конечно. Запустите кто-то у себя такой код:
|
|||
|
||||
| iff |
|
|||
![]() Администратор ![]() ![]() Профиль Группа: Участник Сообщений: 949 Регистрация: 23.3.2007 Репутация: 4 Всего: 16 |
Запустил ваш код. Я так понял это программа типа COM. Я её откомпилировал и запустил. Она издала 1 звук и закрылось. Но если ее откомпилировать в EXE, то она работала странно: издавала 3 звука, а потом не завершало работу. Не совсем понял зачем в 10-ой строке инструкция ret. Я убрал эту инструкцию, а затем снова компилировал в EXE. Тогда программа зароботала нормально.
-------------------- DOS... Синей пеленой экран заполнил чистый DOS Мышь... Стала вдруг квадратной, потеряла форму мышь... Я разбил окно, девяностопятое мастдайное окно, И поставил DOS, и тогда увидел: Это счастье, — вот оно. |
|||
|
||||
| Hohhi |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 25.2.2006 Где: Молдова Репутация: нет Всего: нет |
iff, Спасибо, разобрался, суть уловил
|
|||
|
||||
| 111u3 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 31.8.2009 Где: Омск Репутация: нет Всего: нет |
iff, так у тебя звук будет издаватся через эмулятор терминала а при простом выводе символа этого не будет. При простом выводе символа он выведет это символ, а терминал обработает поступивший символ и если он совпадает с одним из кодов то исполнит дейтвие этого кода.
|
|||
|
||||
| Mikl_ |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 9.11.2007 Репутация: 8 Всего: 14 |
Hohhi,
во вложении (исходник asm и готовый com) проигрывающий цирковой марш через системный динамик и программирование портов, используется 0-ая функция прерывание 1Ah для получения задержки в ~50 мсек Присоединённый файл ( Кол-во скачиваний: 18 )
pa1.rar 2,16 Kb |
|||
|
||||
![]()
|
| Правила форума "Asm для начинающих" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm для начинающих | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |