Объединенный Открытый Проект - Сайт для Настоящих Компьютерщиков

Объединенный Открытый Проект

Сайт для Настоящих Компьютерщиков

; Логин:
  Пароль:
Обычный
Безопасный
Запомнить пользователя



Зарегистрироваться
Забыли пароль?
 
 
 
Объединенный Открытый Проект »   Программирование »   Assembler »   Программа для работы со звуком
RSS

Программа для работы со звуком

Текущий рейтинг темы: Нет

<<Назад  Модератор: Winnowing_RavenПечать
 
Jaxx
Участник Проекта
Дикий прапор
Jaxx
Откуда: Belarus
Всего сообщений: 174
Рейтинг пользователя: 10





Дата регистрации на форуме:
13 мая 2005
Составить программу для подачи звукового сигнала. Частоту и длительность звучания ввести с клавиатуры. При нажатии клавиши <Left Shift> - прекращение звукового сигнала. Прерывание программы по кнопке EXIT. Программа должна работать под управлением WIN95- 2000. Инструментальная среда - TASM 5.10 (MASM 6.11)

---
Каждый человек по-своему прав... А по-моему, нет.
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 3031
Рейтинг пользователя: 75





Дата регистрации на форуме:
29 сен. 2001
Могу выложить кусок, отвечающий непосредственно за генерацию звука (когда домой приду с работы).
А вот под управлением Windows 2000 поработать вряд ли удастся — она прямого доступа к портам не дает.
И что за кнопка EXIT такая? Может быть, ESC имелся в виду?

---
Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
Jaxx
Участник Проекта
Дикий прапор
Jaxx
Откуда: Belarus
Всего сообщений: 174
Рейтинг пользователя: 10





Дата регистрации на форуме:
13 мая 2005
Под кнопкой, я понимаю, подразумевается именно кнопка, а не клавиша Esc. А как же тогда под Win 2000 и XP?

---
Каждый человек по-своему прав... А по-моему, нет.
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 3031
Рейтинг пользователя: 75





Дата регистрации на форуме:
29 сен. 2001
М.б. вообще имелось в виду написание программы под Windows, а не под DOS? Но тогда на TASM не получится, MASM нужен (точнее даже Masm32).

---
Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
Jaxx
Участник Проекта
Дикий прапор
Jaxx
Откуда: Belarus
Всего сообщений: 174
Рейтинг пользователя: 10





Дата регистрации на форуме:
13 мая 2005
Как раз под Windows программа и нужна. В задании же написано, что она должна работать в Win 95-2000. Что касается использования TASM - ничего не знаю, так написано. Может, просто эти два условия одинаковые для всех заданий, только сама задача меняется.

---
Каждый человек по-своему прав... А по-моему, нет.
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 3031
Рейтинг пользователя: 75





Дата регистрации на форуме:
29 сен. 2001
Тогда нужно использовать стандартную функцию Beep, но вот написать готовый код вряд ли смогу — под Windows на ASM никогда не писал (так как не вижу в этом никакого смысла).

---
Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
Jaxx
Участник Проекта
Дикий прапор
Jaxx
Откуда: Belarus
Всего сообщений: 174
Рейтинг пользователя: 10





Дата регистрации на форуме:
13 мая 2005
Я не совсем дружу с ассемблером. И под Винду тоже не писал никогда. Вот и появились проблемы с окнами, менюшками, кнопками... Что бы сделать вот с этим: "Частоту и длительность звучания ввести с клавиатуры"? Это как? Насколько я знаю, динамик может воспроизводить только определенные частоты. Придется делать список возможных частот и выводить его на экран?

---
Каждый человек по-своему прав... А по-моему, нет.
wsx
Участник Проекта
Юниксойд, сетевик
wsx
Откуда: Казань
Всего сообщений: 1084
Рейтинг пользователя: 28

Репутация пользователя: 1




Дата регистрации на форуме:
14 янв. 2005

push ax
push bx
call beep


какие нафиг окошки? Пусть препод подавится консольным приложением. да и вообще скажи ему, что ты не мазохист.
Jaxx
Участник Проекта
Дикий прапор
Jaxx
Откуда: Belarus
Всего сообщений: 174
Рейтинг пользователя: 10





Дата регистрации на форуме:
13 мая 2005
А может я мазохист? И вообще, надо именно под винду

---
Каждый человек по-своему прав... А по-моему, нет.
Jaxx
Участник Проекта
Дикий прапор
Jaxx
Откуда: Belarus
Всего сообщений: 174
Рейтинг пользователя: 10





Дата регистрации на форуме:
13 мая 2005

.model tiny
locals

.code
.startup
;ввод частоты и длительности звука
input_params:
    lea dx,msg1
    call read_int
    jc exit
    mov freq,ax
    lea dx,msg2
    call read_int
    jc exit
    mov len,ax

    lea dx,msg3
    mov ah,9
    int 21h

;расчёт коэффициента деления: c = 1193180 Гц / f
    mov ax,34DCh  ;dx:ax = 1193180
    mov dx,12h
    div freq

;запись коэффициента деления в 3-й канал таймера
    mov dx,ax
    mov al,0B6h
    out 43h,al
    mov al,dl
    out 42h,al
    mov al,dh
    out 42h,al

;включить динамик
    in al,61h
    or al,3
    out 61h,al

;задержка
    xor ax,ax
    mov es,ax
    mov ax,es:[46Ch]
    add ax,len
delay:
    mov dx,es:[46Ch]
    cmp dx,ax
    ja exit_delay
    mov dl,es:[417h]
    test dl,2
    jz delay
exit_delay:

;выключить динамик
    in al,61h
    and al,2
    out 61h,al

    jmp input_params

exit:
    mov ax,4C00h
    int 21h

;--- Ввод целого числа ---
read_int  proc
n    = word ptr [bp-2]
    push bp
    mov bp,sp
    sub sp,2
    mov n,0
    mov ah,9  ;вывод промпта
    int 21h
@@read_char:  
    mov ah,8  ;ввыод символа
    int 21h
    cmp al,27  ;ESC -> выход с CF = 1
    je @@cancel
    cmp al,13  ;CR -> завершение ввода
    je @@done
    cmp al,'0'  ;является ли введённый символ цифрой?
    jb @@read_char
    cmp al,'9'
    ja @@read_char
    push ax    ;эхопечать
    mov dx,ax
    mov ah,2
    int 21h
    pop bx
    sub bl,'0'  ;добавление цифры в результат
    xor bh,bh
    mov ax,10
    mul n
    add ax,bx
    mov n,ax
    jmp @@read_char
;выход с CF = 1
@@cancel:
    stc
    jmp @@exit
@@done:
;переход на новую строку
    mov dl,13
    mov ah,2
    int 21h
    mov dl,10
    mov ah,2
    int 21h
;выход с результатом в AX и CF = 0
    mov ax,n
    clc
@@exit:
    mov sp,bp
    pop bp
    ret
read_int  endp

.data?
freq    dw ?
len    dw ?

.const
msg1    db 'Частота [Гц]> $'
msg2    db 'Длительность [1/18 с]> $'
msg3    db 13,10,'Левый <Shift> - прервать сигнал',13,10,13,10,'$'

end

---
Каждый человек по-своему прав... А по-моему, нет.
Jaxx
Участник Проекта
Дикий прапор
Jaxx
Откуда: Belarus
Всего сообщений: 174
Рейтинг пользователя: 10





Дата регистрации на форуме:
13 мая 2005
Но ведь это ж под DOS, коль я не ошибаюсь?

---
Каждый человек по-своему прав... А по-моему, нет.
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 3031
Рейтинг пользователя: 75





Дата регистрации на форуме:
29 сен. 2001
Именно так: под чистый DOS.
А ты точно уверен, что имелось в виду именно под Windows, а не под ее DOS-эмулятором?

---
Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
Jaxx
Участник Проекта
Дикий прапор
Jaxx
Откуда: Belarus
Всего сообщений: 174
Рейтинг пользователя: 10





Дата регистрации на форуме:
13 мая 2005
Уже начинаю сомневаться... Вот смущает строка "Программа должна работать под управлением WIN95- 2000"

---
Каждый человек по-своему прав... А по-моему, нет.
wsx
Участник Проекта
Юниксойд, сетевик
wsx
Откуда: Казань
Всего сообщений: 1084
Рейтинг пользователя: 28

Репутация пользователя: 1




Дата регистрации на форуме:
14 янв. 2005
Даа. ну и постановка задачи. За такую постановку можешь преподам отомстить. Пересобрать прогу для линя, а затем в какой нить виртуальной машине запустить её и сказать. Программа ведь запускается, и даже работает!
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 3031
Рейтинг пользователя: 75





Дата регистрации на форуме:
29 сен. 2001
wsx Оно, конечно, круто, но труднореализуемо:
а) под Linux нет TASM, а есть всякие nasm и gasm, у которых синтаксис сильно отличается
б) вряд ли кто ему даст эмулятор поставить.

---
Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
Jaxx
Участник Проекта
Дикий прапор
Jaxx
Откуда: Belarus
Всего сообщений: 174
Рейтинг пользователя: 10





Дата регистрации на форуме:
13 мая 2005
В самом деле, зачем такие извращения? Ладно, никаких кнопок не надо делать, допустим. Просто маленькая форма. Ввел длительность, ввел частоту и все. И пиликает. Нажал левый Shift - звук остановился. Нажал Esc - вышел из программы. TASM, MASM - неважно, главное Win32.

---
Каждый человек по-своему прав... А по-моему, нет.
<<Назад  Модератор: Winnowing_RavenПечать
Объединенный Открытый Проект »   Программирование »   Assembler »   Программа для работы со звуком
RSS
Быстрый переход в раздел:
Реклама: Всегда можно купить регистрация ооо в москве под ключ - гибкие условия


Время выполнения скрипта: 0.5730. Количество выполненных запросов: 18, время выполнения запросов 0.1704
Rambler's Top100