Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.09.2009, 22:38   #1
bondik
Форумчанин
 
Регистрация: 24.04.2008
Сообщений: 300
По умолчанию прерывание 61h,проблемы с программой

Вообщем решил отойти от С# и С++ и решил немного побаловаться ассемблером,написал простую программу,которая должна пищать системным гудком,через ASCII код 7 и консольный вывод все работает,решил сделать через 61h прерывание,и сообвственно не работает,подскажите в чем ошибка:
Код:
ORG 100h
MOV  CX,9000        ;счетчик числа циклов
LOL:
    in al,61h
    or al,3
    out 61h,al
LOOP LOL

RET
компилятор FASM

Последний раз редактировалось bondik; 10.09.2009 в 22:42.
bondik вне форума Ответить с цитированием
Старый 11.09.2009, 06:53   #2
MalCer
Форумчанин
 
Аватар для MalCer
 
Регистрация: 15.07.2008
Сообщений: 615
По умолчанию

Должно все работать, наверное вы запускаете под windows, что ес-но этот код работать не будет
xor eax, eax
xchg [eax], eax
MalCer вне форума Ответить с цитированием
Старый 11.09.2009, 10:51   #3
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Проблема в том, что вы только включаете бит динамика, а чтобы создать колебательные движения для звука, его нужно еще и выключать, т.е. это должно выглядеть хотя бы так.
Код:
ORG 100h
MOV  CX,9000        ;счетчик числа циклов
LOL:
	in al,61h
	or al,3
	out 61h,al
	and	al,0FCh
	out	61h,al
LOOP LOL

RET
При этом он будет пишать на самой большой частоте, которую может выдать, чтобы получить более низкий звук нужно вставлять задержки.
Код:
ORG 100h
MOV  CX,900        ;счетчик числа циклов
LOL:

	in al,61h
	or al,3
	out 61h,al
	mov dx,60000
@@:
	mov bx,2000
	dec bx
	jnz $-1
	dec dx
	jnz @b
	and	al,0FCh
	out	61h,al
LOOP LOL

RET
И кроме того хотелось бы сказать, что т.к. эту программу вы будете запускать из под винды, то чистый звук вы вряд ли услышите.

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
push 200 ;частота
push 1000 ; Забыл как этоназывается.
call Beep;
наверно это называется длительностью
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4

Последний раз редактировалось Goodwin98; 11.09.2009 в 12:06.
Goodwin98 вне форума Ответить с цитированием
Старый 11.09.2009, 11:18   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Goodwin98
Вот-вот. Посему автору предлагаю восользоваться функциями WIN API Beep. Ведь не сложно же вызвать ее в ассемблере
Код:
push 200 ;частота
push 1000 ; Забыл как этоназывается.
call Beep;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Порты 42H, 43H, 61H Strogg Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 20.03.2009 18:24
Проблемы с установленной программой Спартак Общие вопросы Delphi 8 06.07.2008 18:06
6 прерывание ленусик Фриланс 1 03.06.2008 16:22
6 прерывание ленусик Помощь студентам 5 30.05.2008 16:57