Ensamblador - sonido en ensamblador????

 
Vista:

sonido en ensamblador????

Publicado por peque (1 intervención) el 30/05/2005 19:55:59
hola a todos!

intentando ponerle sonido a un jueguecito que tengo que hacer como trabajo final para la asignatura de arquitectura de computadores, he llegado hasta aqui, no suelo dejar notas en los foros, pero llevo tanto rato intentando encontrar algo que me ayude que ya me he cansado.

os comento mi problema...

el jueguecito es en lenguaje ensamblador, en MS-DOS, (en clase trabajamos en torno al 8086) es algo asi como de star wars (bueno, dos naves que se disparan) y tengo que ponerle musiquita, he encontrado muchas funciones que emiten sonidos a traves de los altavoces internos, pero no se por donde cogerlas... si alguien fuera tan amable de explicarme como reproducir sonidos utilizando los altavoces internos, to eso en lenguaje ensamblador.

nose si me he explicado muy bien, pero espero que alguien me haya entendido y me heche un cable

espero me contesteis en cuanto podais

gasias!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:sonido en ensamblador????

Publicado por Ge-ergon (6 intervenciones) el 01/06/2005 04:38:16
Hola!
Verifica el siguiente enlace dentro del foro:

http://www.lawebdelprogramador.com/news/mostrar_new.php?id=29&texto=Ensamblador&n1=140344&n2=0&n3=0&n4=0&n5=0&n6=0&n7=0&n8=0&n9=0&n0=0

De paso te comparto la siguiente tabla que puede ser de utilidad.

TABLA NOTAS (sintaxis pascal)

Const
Notes : Array[1..96] Of Word =
{ C C#,D- D D#,E- E F F#,G- G G#,A- A A#,B- B }
(0033, 0035, 0037, 0039, 0041, 0044, 0046, 0049, 0052, 0055, 0058, 0062,
0065, 0069, 0073, 0078, 0082, 0087, 0093, 0098, 0104, 0110, 0117, 0123,
0131, 0139, 0147, 0156, 0165, 0175, 0185, 0196, 0208, 0220, 0233, 0247,
0262, 0277, 0294, 0311, 0330, 0349, 0370, 0392, 0415, 0440, 0466, 0494,
0523, 0554, 0587, 0622, 0659, 0698, 0740, 0784, 0831, 0880, 0932, 0987,
1047, 1109, 1175, 1245, 1329, 1397, 1480, 1568, 1661, 1760, 1865, 1976,
2093, 2217, 2349, 2489, 2637, 2794, 2960, 3136, 3322, 3520, 3729, 3951,
4186, 4435, 4699, 4978, 5274, 5588, 5920, 6272, 6645, 7040, 7459, 7902);

{
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:sonido en ensamblador????

Publicado por da Gangsta (1 intervención) el 08/11/2006 01:04:41
AAAA simon yo tengo la respuesta para ese problema
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:sonido en ensamblador????

Publicado por astrid bolanos (1 intervención) el 05/03/2009 06:06:18
Usando el aporte de Ge-ergon y juegito de pacman que anda en la red aqui hay un pequeño programita :

;----------------programa para probar sonido asm-----------
Model Tiny
P186
.CODE
Delay MACRO espera
LOCAL loop
pusha
MOV AH, 0 ;
INT 1Ah ;
MOV BX, DX ;
ADD BX, espera ;
sub bx, 5000

LOOP: ;
MOV AH, 0 ; ...
INT 1Ah ; ...
CMP DX,BX ; ...
JL LOOP ; ...

popa
ENDM

Espera MACRO t
LOCAL loop1

PUSH ax
PUSH bx
PUSH cx
PUSH dx

MOV ah, 0 ;
INT 1Ah ;
MOV bx, dx ;
ADD bx, t ;

loop1: ;
MOV ah, 0 ; ...
INT 1Ah ; ...
CMP dx, bx ; ...
JL loop1 ;

POP dx
POP cx
POP bx
POP ax

ENDM
som MACRO freq, tempo
LOCAL sai
pusha
MOV BX, freq ; determina a frequencia do som
MOV AL,10110110b ; modo de operacion
OUT 43h, AL ; do timer2
MOV AX, BX ; armazena a frequencia no timer2
OUT 42h, AL ; ...
MOV AL, AH ; ...
OUT 42h, AL ; ...
MOV AL,0FFh ; liga o speaker
OUT 61h, AL ; ...

Delay tempo

sai:
; genera un peq atraso
MOV AL, 0 ; desliga o speaker
OUT 61h, AL ; ...
popa
ENDM
INICIO:
CALL sound
som 376 1
som 356 1
som 316 1
som 276 1
som 236 1
CALL nosound
mov ah,4ch
int 21h

;--------------------------------------------------------------
;

;****************** sound() -- Turn on speaker at specific frequency
;void sound(int freq);

freq equ bp+4

sound PROC

push bp ;Set up stack frame
mov bp,sp
pusha ;Save registers

mov dx,12h ;BX = 1193180 / freq.
mov ax,34DCh
mov bx,[freq]
div bx
xchg bx,ax

mov al,0B6h ;Set frequency
out 43h,al
mov al,bl
out 42h,al
mov al,bh
out 42h,al

in al,61h ;Turn on speaker
or al,3
out 61h,al

popa ;Restore registers
pop bp ;Delete stack frame
ret ;Return

sound endp

;****************** nosound() -- Turn off speaker
;void nosound(void);

nosound proc

push ax ;Save AX

in al,61h ;Turn off speaker
and al,0FCh
out 61h,al

pop ax ;Res
ret
nosound endp
;-------------------------------------

END INICIO
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar