Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
PRCTICA 4
1. INTRODUCCIN
Esta prctica est centrada a los sonidos que se pueden emitir en una computadora a
travs de un programa en LENGUAJE ENSAMBLADOR. Todos los sonidos que se
emiten, se pueden variar mediante la frecuencia, la cual est dada en veces por segundo.
2. OBJETIVOS
2.1 El alumno aprender a usar los puertos de salida para emitir sonidos y ruidos por el
altavoz.
3 DESARROLLO
IDEAL
DOSSEG
MODEL small
DATASEG
ContReloj DW ?,?
ContA DW 1000 ;Para nota
ContD DW 1000 ;Para silencio
Entera DW 2000 ;Nota entera
Notas DW 4186 ;C
DW 4435
DW 4699 ;D
DW 4978
DW 5274 ;E
DW 5588 ;F
AUTOR: PROFESOR SALVADOR SAUCEDO FLORES 4-1
EDICIN: PROFESOR PABLO FUENTES RAMOS
LENGUAJE ENSAMBLADOR 80386 PRCTICA 4
DW 5920
DW 6272 ;G
DW 6645
DW 7040 ;A
DW 7459
DW 790 ;B
CODESEG
PUBLIC Toca
PROC Frec
ENDP Frec
Salvamos registros, hacemos la divisin con el registro CX. El resultado est en el registro
AX, lo movemos al registro CX, ya que el registro CX tendr la frecuencia usada.
PROC PoneTono
push ax
out 42h,al
pop ax ;Repone registro
ENDP PoneTono
PROC ATono
ENDP ATono
PROC Lapso
@@10:
@@20:
ENDP Lapso
Salvamos registros. Cargamos registro DX con cero, registro AX con el tiempo del registro
CX y el registro BX con 55. Dividimos el registro BX, el resultado se encuentra en AX, lo
colocamos en el registro BX (nmero de tics).
Usamos el servicio 0 de la interrupcin 1Ah para obtener los tics del reloj y salvarlos en la
variable:
Volvemos a usar la interrupcin 1Ah para obtener los nuevos tics del reloj.
Comparamos la parte alta de la variable ContReloj con el registro CX; si es menor salta a
@@10 para volver a usar la interrupcin 1Ah; si es mayor termina y recupera registros; si
no suceden ambos casos comparamos la parte inferior de la variable ContReloj con el
registro DX; si es menor salta a @@10 para usar la interrupcin 1Ah; si no termina con la
subrutina y recupera registros.
PROC QTono
ENDP QTono
Traemos valor a puerta de entrada, apagamos el altavoz y sacamos el valor del registro AL
por la puerta de salida 61h.
PROC Nota
ENDP Nota
PROC Toca
@@10:
; comando tempo.
@@20:
; comando nota..
@@30:
; Comando de descanso..
@@40:
call Lapso
jmp @@10
@@99:
pop ax ;Recupera
pop bx
pop cx
pop dx
pop si
ret
ENDP Toca
END ;Fin de mdulo SONIDO.ASM.
IDEAL
DOSSEG
MODEL small
STACK 512
DATASEG
ClaveFin DB 0
DB 'N',62,08,192
DB 'N',60,32,192
DB 'N',58,24,192
DB 'N',53,08,192
DB 'N',50,32,192
DB 'N',46,24,192
DB 'N',55,08,192
DB 'N',53,64,192
DB 'N',41,64,192
DB 'X'
CODESEG
; De SONIDO.OBJ
EXTRN Toca:proc
Inicia:
C:\SEM386>strauss
DATASEG
CODESEG
PUBLIC Alerta
PROC Fuga
@@10:
@@20:
nop
nop
loop @@20
cmp bx,[f2] ;checa si acabo
je @@30
add bx,si ;resbala la frecuencia
jmp @@10
@@30:
pop si
ret
ENDP Fuga
PROC Alerta
@@10:
ENDP Alerta
IDEAL
DOSSEG
MODEL small
STACK 512
DATASEG
ClaveFin DB 0
CODESEG
; De SONIDO.OBJ
EXTRN Alerta:proc
AUTOR: PROFESOR SALVADOR SAUCEDO FLORES 4-11
EDICIN: PROFESOR PABLO FUENTES RAMOS
LENGUAJE ENSAMBLADOR 80386 PRCTICA 4
Inicia:
C:\SEM386>roja
4. TAREAS
4.2 Con las siguientes notas hacer el programa FANFA, tonadilla muy usada en los hipdromos
(Himno a la victoria).
55,32,128
60,32,128
64,32,128
67,48,228
67,16,228
67,32,228
64,48,228
64,16,228
64,32,228
60,32,128
64,32,128
60,34,128
55,96,240
4.5 Crear un programa llamado EJECUTA que ejecute una meloda guardada en un archivo.
Capturar el archivo tipo ASCII cuyo listado se da con el nombre ALEGRIA.MLD que permite
ejecutar el conocido himno a la alegra. Hacer otro archivo para tocar Yesterday. El uso de
EJECUTA es:
C:\SEM386>ejecuta alegria
T,35
N,59,64,192
N,60,32,192
N,62,32,192
N,62,32,192
N,60,32,192
N,59,32,192
N,57,32,192
N,55,32,192
N,55,32,192
N,57,32,192
N,59,32,192
N,59,48,192
N,57,16,228
N,57,64,192
D,24
N,59,64,192
N,60,32,192
N,62,32,192
N,62,32,192
N,60,32,192
N,59,32,192
N,57,32,192
N,55,32,192
N,55,32,192
N,57,32,192
N,59,32,192
N,57,48,192
N,55,16,228
N,55,64,192
D,16
N,57,64,192
N,59,32,192
N,55,32,192
N,57,32,192
N,59,16,228
N,60,16,228
N,59,32,192
N,55,32,192
N,57,32,192
N,59,16,228
N,60,16,228
N,59,32,192
AUTOR: PROFESOR SALVADOR SAUCEDO FLORES 4-13
EDICIN: PROFESOR PABLO FUENTES RAMOS
LENGUAJE ENSAMBLADOR 80386 PRCTICA 4
N,57,32,192
N,55,32,192
N,57,32,192
N,50,64,192
D,16
N,59,64,192
N,60,32,192
N,62,32,192
N,62,32,192
N,60,32,192
N,59,32,192
N,57,32,192
N,55,32,192
N,55,32,192
N,57,32,192
N,59,32,192
N,57,48,192
N,55,16,228
N,55,64,192
X
C 130 8
138.6 (C#, D)
D 146 8
155.6 (D#, E)
E 164 8
F 174 6
185.0 (F#, G)
G 196 0
207.7 (G#, A)
A 220.0
233.1 (A#, B)
B 246 8
C 261.7
277.2 (C#, D)
D 293 7
311.1 (D#, E)
E 329 6
F 349 2
370.0 (F#, G)
G 392 0
415.3 (G#, A)
A 440 0
466.2 (A#, B
B 493.9
C 523.3