• Domingo 22 de Diciembre de 2024, 10:14

Autor Tema:  Altavoz Del Pc  (Leído 1770 veces)

Cobo

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Altavoz Del Pc
« en: Sábado 13 de Marzo de 2004, 15:57 »
0
Hola a todos:

Estoy intentando generar una melodia por el altavoz del pc, programado en asm, pero no me suena nada.

Tengo un athlon 1200 y WinXP (no se si esto tiene algo q ver) pero es que no escucho nada.

El programa que estoy usando activa el altovoz de la siguiente manera

Código: Text
  1.  
  2. InicAltavoz:
  3.  
  4.   push ax
  5.  
  6.   in al,61h
  7.   or al,03  
  8.   out 61h,al  
  9.  
  10.   pop ax
  11.   ret
  12.  
  13.  

lo cierra asi:

Código: Text
  1.  
  2. CerrarAltavoz:
  3.  
  4.   push ax
  5.  
  6.   in al,61h
  7.   and al,11111100b  
  8.   out 61h,al  
  9.  
  10.   pop ax
  11.  
  12.   ret
  13.  
  14.  

y la frequencia se la paso directamente al timmer.. pero mi problema es q no oigo nada.. me podrias exhar una mano?? como me podria asegurar que mi pc realmente emite sonidos generados con programas de este tipo??

muchas gracias.

vandyke

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Altavoz Del Pc
« Respuesta #1 en: Viernes 19 de Marzo de 2004, 04:53 »
0
Saludos,

Creo que el problemilla que tienes es quizas que estas activando la bocina y la estas desactivando al instante. Prueba activarla por un ratito y luego desactivarla a ver si escuchas algo.  Esta rutina que te muestro a continuacion la utilize para elaborar un piano, espero que te funcione:

        mov     al, 182         ; Prepare the speaker for the
        out       43h, al       ;  note.
        mov     ax,di           ; Frequency number (in decimal)
                                ;  for middle C.
        out     42h, al         ; Output low byte.
        mov     al, ah          ; Output high byte.
        out     42h, al
        in      al, 61h         ; Turn on note (get value from
                                ;  port 61h).
        or      al, 00000011b   ; Set bits 1 and 0.
        out     61h, al         ; Send new value.
        mov     bx, 25          ; Pause for duration of note.
pause1:
        mov     cx, 65535
pause2:
        dec     cx
        jne     pause2
        dec     bx
        jne     pause1

        in      al, 61h         ; Turn off note (get value from
                                ;  port 61h).
        and     al, 11111100b   ; Reset bits 1 and 0.
        out     61h, al         ; Send new value.