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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.03.2009, 17:01   #1
Strogg
Пользователь
 
Аватар для Strogg
 
Регистрация: 19.03.2009
Сообщений: 13
По умолчанию Порты 42H, 43H, 61H

1. Что за порты 42Н, 43Н, 61Н?
2. Как получено магическое число tonelow?

;------------------------------------------------------------------------
;Программа ,имитирующая звук сирены.
;Изменение высоты звука от 450 Гц до 2100 Гц.
;Используется макрос delay (задержка).
;При необходимости
;можно поменять значение задержки (по умолчанию - для процессора Pentium).
;------------------------------------------------------------------------

Код:
masm
model	small
stack	100h
delay macro time
local	ext,iter
				;макрос задержки, его текст ограничивается директивами macro и endm.
				;На входе - значение задержки (в мкс)

	push	cx
	mov	cx,time
ext:
	push	cx
	mov	cx,5000
iter:
	loop	iter
	pop	cx
	loop	ext
	pop	cx
endm
.data				;сегмент данных
tonelow	dw	2651		;нижняя граница звучания = 450 Гц
cnt	db	0		;счётчик для выхода из программы
temp	dw	?		;верхняя граница звучания
.code				;сегмент кода
main:				;точка входа в программу
	mov	ax,@data	;связываем регистр ds с сегментом
	mov	ds,ax		;данных через регистр ax
	xor	ax,ax		;очищаем ax
go:
				;заносим слово состояния 10110110b(0В6h) в командный регистр (порт 43h)
	mov	al,0B6h
	out	43h,al
	in	al,61h		;получим значение порта 61h в al
	or	al,3		;инициализируем динамик и подаем ток в порт 61h
	out	61h,al
	mov	cx,2083		;количество шагов ступенчатого изменения тона
musicup:
				;в ax значение нижней границы частоты 
	mov	ax,tonelow
	out	42h,al		;в порт 42h младшее слово ax :al
	xchg	al,ah		;обмен между al и ah
	out	42h,al		;в порт 42h старшее слово ax:ah
	add	tonelow,1	;повышаем тон
	delay 1			;задержка на 1 мкс
	mov	dx,tonelow	;в dx текущее значение высоты
	mov	temp,dx		;temp - верхнее значение высоты 
	loop	musicup		;повторить цикл повышения
	mov	cx,2083		;восстановить счетчик цикла
musicdown:
	mov	ax,temp		;в ax верхнее значение высоты
	out	42h,al		;в порт 42h младшее слово ax :al
	mov	al,ah		;обмен между al и ah
	out	42h,al		;в порт 42h старшее слово ax :ah
	sub	temp,1		;понижаем высоту
	delay 1			;задержка на 1 мкс
	loop musicdown		;повторить цикл понижения
nosound:
	in	al,61h		;получим значение порта 61h в AL
	and	al,0FCh		;выключить динамик
	out	61h,al		;в порт 61h
	mov	dx,2651		;для последующих циклов
	mov	tonelow,dx
	inc	cnt		;увеличиваем счётчик проходов, то есть 
				;количество звучаний сирены
	cmp	cnt,5		;5 раз ? 
	jne	go		;если нет, идти на метку go
	exit:
	mov	ax,4c00h	;стандартный выход
	int	21h
end main			;конец программы

Последний раз редактировалось rpy3uH; 19.03.2009 в 17:49.
Strogg вне форума Ответить с цитированием
Старый 20.03.2009, 01:08   #2
Д'якон
Форумчанин
 
Регистрация: 05.12.2007
Сообщений: 236
По умолчанию

1. Это порты системного динамика вероятнее всего, а вообще можно посмотреть в диспетчере устройств или через msinfo32

2. Читай документацию DDK
Д'якон вне форума Ответить с цитированием
Старый 20.03.2009, 18:03   #3
Strogg
Пользователь
 
Аватар для Strogg
 
Регистрация: 19.03.2009
Сообщений: 13
По умолчанию

msinfo32:
0x00000040-0x00000043 System timer
0x00000061-0x00000061 System speaker

Системный таймер?
Strogg вне форума Ответить с цитированием
Старый 20.03.2009, 18:17   #4
Д'якон
Форумчанин
 
Регистрация: 05.12.2007
Сообщений: 236
По умолчанию

переводим через онлайн переводчик. Подозреваю, что управляют системным динамиком через таймер )))))
Д'якон вне форума Ответить с цитированием
Старый 20.03.2009, 18:24   #5
Strogg
Пользователь
 
Аватар для Strogg
 
Регистрация: 19.03.2009
Сообщений: 13
По умолчанию

" Канал управления звуком - логическая схема, использующая тональный сигнал таймера и программно-управляемые биты системного порта. "
Истина где-то близко?
Strogg вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
порты на Assemblere Dimon Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 11 13.04.2010 17:36
Вывод данных в порты LPT и COM Захар Компьютерное железо 6 05.04.2010 12:29
COM Порты Skazi21101 Помощь студентам 0 02.11.2008 12:24
порты Elm0 Свободное общение 2 02.06.2007 15:56
Порты у Windows Alar Работа с сетью в Delphi 0 30.10.2006 13:37