Работа с системным динамиком

Тема в разделе "WASM.WIN32", создана пользователем Jaxx, 28 авг 2006.

  1. Jaxx

    Jaxx New Member

    Публикаций:
    0
    Регистрация:
    28 авг 2006
    Сообщения:
    6
    Составить программу для подачи звукового сигнала.
    Частоту и длительность звучания ввести с клавиатуры.
    При нажатии клавиши <Left Shift> - прекращение звукового сигнала.
    Прерывание программы по кнопке EXIT.
    Программа должна работать под управлением WIN95- 2000.
    Инструментальная среда - TASM 5.10 (MASM 6.11)
     
  2. YuraseK

    YuraseK New Member

    Публикаций:
    0
    Регистрация:
    25 сен 2004
    Сообщения:
    13
    Адрес:
    Republic of Belarus
    Jaxx
    Можешь посмотреть вот это (пример простейшего пианино, код хорошо откомментирован и компилируется на TASM'е, писАлось давно и в учебных целях, но должно помочь):
    http://yurasek.narod.ru/ASM/piano.rar (2 Кб)
     
  3. Jaxx

    Jaxx New Member

    Публикаций:
    0
    Регистрация:
    28 авг 2006
    Сообщения:
    6
    Я так понимаю, что программа требуется не под DOS, а Win32
     
  4. YuraseK

    YuraseK New Member

    Публикаций:
    0
    Регистрация:
    25 сен 2004
    Сообщения:
    13
    Адрес:
    Republic of Belarus
    Jaxx
    В 2000-й, XP есть эмуляция DOS. В чём проблема? Или для программы необходим графический (оконный) интерфейс?
     
  5. Jaxx

    Jaxx New Member

    Публикаций:
    0
    Регистрация:
    28 авг 2006
    Сообщения:
    6
    Хороший вопрос... Задача поставлено уж очень непонятно. Но например предложение "Прерывание программы по кнопке EXIT" наводит на определенные мысли, в частности слово "Кнопка".
     
  6. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Может, это Esc.

    А под 9x/NT можно запросто через API использовать любую звуковую карту. Поэтому не вижу смысла использовать динамик, кроме как в досе. Да и длительность звучания будет сильно зависеть от частоты cpu и издержек мультизадачности.
     
  7. BUGOR

    BUGOR New Member

    Публикаций:
    0
    Регистрация:
    14 авг 2005
    Сообщения:
    44
    BOOL Beep(

    DWORD dwFreq, // sound frequency, in hertz
    DWORD dwDuration // sound duration, in milliseconds
    );

    Или я что-то не так понял?
     
  8. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    BUGOR
    В справочнике написано, что оба параметра игнорируются в Windows 95.
     
  9. Jaxx

    Jaxx New Member

    Публикаций:
    0
    Регистрация:
    28 авг 2006
    Сообщения:
    6
    Да и шайтан с ней, с 95 Виндой. Все равно почти нигде давно уже не используется. Под 2000-XP надо. А вот через звуковую карту - не надо. Все должно быть по условию задачи, без самодеятельности всяческой. Только время поджимает... Народ, плиз, выручайте...
     
  10. drmad

    drmad New Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    332
    Адрес:
    Russia
    Никаких проблем. Всю работу со 2-м каналом таймера полностью берешь из ДОСовских программ. Единственное что - доступ к портам. Под вин95/98/МЕ проблем не будет, можно юзать IN и OUT. Под винNT/2000/XP придется юзать какую-нибудь библиотеку, открывающую порты - winio, openio, openports, tvichw32 и т.п., их в Инете немеряно. И все.
     
  11. Jaxx

    Jaxx New Member

    Публикаций:
    0
    Регистрация:
    28 авг 2006
    Сообщения:
    6
    Легко тебе говорить. А если я ассемблер не знаю вообще?
     
  12. drmad

    drmad New Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    332
    Адрес:
    Russia
    Лови идею. Компилятор Tasm, будет работать под 95/98/ME. Под NT/2000/XP вылетит.

    Код (Text):
    1. includelib import32.lib
    2. extrn ExitProcess:near
    3. extrn MessageBoxA:near
    4.     .386
    5.     .model FLAT
    6.     .data
    7. Header  db  0
    8. Messag  db  'Click OK',0   
    9. CellNam db  255 dup (255)
    10.     .code
    11. _start:
    12.     mov al, 3
    13.     out 61H, al
    14.  
    15.     push    0
    16.     push    offset Header
    17.     push    offset Messag      
    18.     push    0
    19.     call    MessageBoxA
    20.  
    21.     sub al, al
    22.     out 61H, al
    23.  
    24.     push    0
    25.     call    ExitProcess
    26.  
    27. end _start
    Дальше сам. Учиться надо, а не халяву ловить. :)
     
  13. cerega_k

    cerega_k New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2006
    Сообщения:
    1
    Я думаю Jaxx просит помощи в ниписании драйвера под винNT/2000/XP на TASMe с передачей параметров из пользовательской проги в драйвер и обратно.Примеров на MASMe много,а вот в TASMe?Помогите кто может.
     
  14. drmad

    drmad New Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    332
    Адрес:
    Russia
    По очень многим мелким признакам Jaxx - студент какокого-то компьютерного факультета (на других такие задания не дают), которому еще прошлой зимой (летом у нас в стране никто не учится) дали курсовик на эту тему. Прошла весна, он его не сдал. Потому что нифига не понял и не собирался. Прошло лето, он наконец решил немного почесаться.

    Если я ошибся, то буду даже очень рад. И прошу извиненений.
     
  15. Jaxx

    Jaxx New Member

    Публикаций:
    0
    Регистрация:
    28 авг 2006
    Сообщения:
    6
    drmad , ты должен быть очень рад, ибо ты не прав. 1. Это не курсовая, а контрольная 2. Задание дали совсем недавно, не больше месяца назад 3. Месяц назад я за него не брался, потому что делал другие работы 4. Я в самом деле нифига не понял, ибо за месяц выучить ассемблер нереально 5. Теперь собрался, но опять же - месяц... 6. Раньше не учил, потому как преподов у нас нету, только методисты - такой уж универ 7. Халяву ловить не миею ни малейшего желания, но другого выхода у меня нет. Если вы отказываетесь помочь - то так и скажите.
     
  16. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Jaxx
    За неделю максимум можно пробежаться по всем туториалам Iczelion'а, чтоб научиться делать простенькие окошки в masm. Нужно ведь всего пара контролов edit для ввода частоты и длительности сигнала, пара кнопок (play/exit) и всё. Раз win95 не рассматривается, то функции Beep, что BUGOR привёл, будет достаточно. Никаких драйверов писать для подобной ерунды не надо и поверхностных знаний ассемблера должно хватить.

    ЗЫ: Мои ребята уже на второй неделе знакомства с fasm более интересные задачи решают.
     
  17. drmad

    drmad New Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    332
    Адрес:
    Russia
    Jaxx
    Помогать хочется человеку, который карабкается сам. Давай, всем миром поможем. Задавай конкретные вопросы.