Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Издать Beep под BIOS 
:(
    Опции темы
Hohhi
Дата 29.11.2009, 01:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 25.2.2006
Где: Молдова

Репутация: нет
Всего: нет



необходимо издать beep, используя только BIOS прерывание(я). Насколько я знаю 7ка в таблице ASCII соответствует звуковому сигналу. По непонятным мне причинам исполняя след код звука я не слышу.
Код

        mov cx,1
        mov ah,0Ah
        mov al,07h
        int 10h

Подскажите варианты решения задачи
PM MAIL ICQ   Вверх
spin2
Дата 29.11.2009, 02:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 15.12.2005
Где: Москва-Одесса

Репутация: нет
Всего: 31



Hohhi, когда я учила асм и проигрывала сигналы ("в лесу родилась елочка"), нужно было еще частоту сигнала указывать...


--------------------
"С кем тяжело молчать, с тем не о чем говорить" (Метерлинк)
блог
Все об ICQ-ботах
PM MAIL WWW ICQ Skype Jabber   Вверх
111u3
Дата 29.11.2009, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 31.8.2009
Где: Омск

Репутация: нет
Всего: нет



spin2, частоту сигнала ты указывать будешь если тебе ее дадут где указать. Тут же просто издать звук с помощью ascii кода.
PM MAIL ICQ   Вверх
iff
Дата 30.11.2009, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


Профиль
Группа: Участник
Сообщений: 949
Регистрация: 23.3.2007

Репутация: 4
Всего: 16



Я попробовал применить эту функцию 0ah прерывания 10h. Тоже ничего не получилось. Более того, у меня не получилось вывести на экран даже обычный символ (букву A).
Я бы предложил использовать функцию 02h прерывания 21h. Ниже дан код программы, которая издаёт один звук.
Код

.model small
.code
main:
mov ah, 02h        ;Издать звук
mov dl, 07h
int 21h

mov ax, 4c00h      ;Выход
int 21h
end main



--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
111u3
Дата 30.11.2009, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 31.8.2009
Где: Омск

Репутация: нет
Всего: нет



Гы, ну не знаю люди как вы умудряетесь так кодить. У меня что звуки, что сисмволы как через прерывания дос"а так и бсвв спокойно выводятся хоть под виндой, хоть под чем. Да и при отсутсвии ос тоже все прерывания биоса работают
PM MAIL ICQ   Вверх
iff
Дата 30.11.2009, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


Профиль
Группа: Участник
Сообщений: 949
Регистрация: 23.3.2007

Репутация: 4
Всего: 16



Ой, не внимательно прочитал первый пост. А там ведь написано, что нужно писать под BIOS, а это значит, что прерывание 21h использовать нельзя. Тогда можно попробовать это:
Код

mov ax, 0e07h
int 10h

Этот код организует вывод на экран в режиме телетайпа.
Как вы понимаете, этот код надо поставить вместо 4-6 строчек моего предыдущего листинга.

111u3, я делау так: в AsmTool набираю программу и компилирую TASM 4.1 в файл *.EXE
Если набиру код из первого поста (предворительно введя все необходимые директивы, функцию завершения программы, и т.д.), то программа запускается, а звука нет.


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
Hohhi
Дата 30.11.2009, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 25.2.2006
Где: Молдова

Репутация: нет
Всего: нет



iff, удивительно, но у меня и так не бипит. Может у меня с динамиком лажа конечно. Запустите кто-то у себя такой код:
Код

CODESG  SEGMENT PARA 'Code'
        ASSUME  CS:CODESG,DS:CODESG,SS:CODESG,ES:CODESG
        org     100h            
begin:  jmp     main            
;-----------------------------------------------------------------
message db 'Hello'
main   proc near
        mov ax, 0e07h
    int 10h
        ret    
        mov ax,4C00h
        int 21h                 
main    endp 
codesg  ends
        end   begin

PM MAIL ICQ   Вверх
iff
Дата 30.11.2009, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


Профиль
Группа: Участник
Сообщений: 949
Регистрация: 23.3.2007

Репутация: 4
Всего: 16



Запустил ваш код. Я так понял это программа типа COM. Я её откомпилировал и запустил. Она издала 1 звук и закрылось. Но если ее откомпилировать в EXE, то она работала странно: издавала 3 звука, а потом не завершало работу. Не совсем понял зачем в 10-ой строке инструкция ret. Я убрал эту инструкцию, а затем снова компилировал в EXE. Тогда программа зароботала нормально.


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
Hohhi
Дата 30.11.2009, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 25.2.2006
Где: Молдова

Репутация: нет
Всего: нет



iff, Спасибо, разобрался, суть уловил

PM MAIL ICQ   Вверх
111u3
Дата 1.12.2009, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 31.8.2009
Где: Омск

Репутация: нет
Всего: нет



iff, так у тебя звук будет издаватся через эмулятор терминала а при простом выводе символа этого не будет. При простом выводе символа он выведет это символ, а терминал обработает поступивший символ и если он совпадает с одним из кодов то исполнит дейтвие этого кода.
PM MAIL ICQ   Вверх
Mikl_
Дата 1.12.2009, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 9.11.2007

Репутация: 8
Всего: 14



Hohhi, 
во вложении (исходник asm и готовый com) проигрывающий цирковой марш через системный динамик и программирование портов, используется 0-ая функция прерывание 1Ah для получения задержки в ~50 мсек  smile не нравится прерывание 1Ah -- поищи как делать задержку через 10h прерывание smile 

Присоединённый файл ( Кол-во скачиваний: 18 )
Присоединённый файл  pa1.rar 2,16 Kb
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0590 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.