etc-ii apm-octubre-2007 universidad autónoma de madrid escuela politécnica superior etc-ii...
TRANSCRIPT
ETC-II
APM-Octubre-2007
Universidad Autónoma de Madrid
Escuela Politécnica Superior
ETC-II
APM-Septiembre-2009
Laboratorio de Estructura y Tecnología de Computadores
Proyecto Piano
ETC-II
APM-Octubre-2007
Introducción
Programar en Ensamblador x86 un Teclado electrónico para MSDOS
Objetivos:Aprender a programar el entorno 8086 Aprender a realizar un driverAprender la interacción con los recursos hardwareAprender la interacción entre C y Lenguaje ensamblador
Conocimientos:Programación y depuración 8086Funcionamiento de interrupciones softwareComunicación con programas residentesTimer del PC (interrupción 0x1C , generación de sonidos)RTCUso de la pila para paso de parámetros
APM-Septiembre-2009
ETC-II
APM-Octubre-2007
Introducción
Generación de un sonido mediante el altavoz del PC:
• El altavoz del PC está conectado al bit 1 del Puerto 61H (xxxx-xxox)• Cambiando el estado del bit a ciertas frecuencias se produce una señal audible.• Según la frecuencia, tenemos un sonido (nota) u otro.• Dos opciones:
• Bucle con espera activa y acceso directo al altavoz • Usar el Timer 0 para generar la señal cuadrada automáticamente
APM-Septiembre-2009
Onda sonoraSeñal Eléctrica conectada al altavoz
PC
ETC-II
APM-Octubre-2007
Escala musical temperada
APM-Septiembre-2009
Nota Frec Hz Tecla
1 DO 261,626 C
2 DO# 277,183 C#
3 RE 293,665 D
4 RE# 311,127 D#
5 MI 329,628 E
6 FA 349,228 F
7 FA# 369,994 F#
8 SOL 391,995 G
9 SOL# 415,305 G#
10 LA 440 A
11 LA# 466,164 A#
12 SI 493,883 B
13 DO 523,251
f 2f
12
2Relación entre una nota y la siguiente
ETC-II
APM-Octubre-2007
Estructura Proyecto
Driver INT 61H
Generador Notas musicales por TMR y RTC
Practica 3
Programa en C para
leer canciones de fichero
Librería en ASM que hace de interfaz
entre C y el driver
APM-Septiembre-2009
Teclado Electrónico
Práctica 2
Práctica 1
Mandamos la nota
Servicios Int 61H
Mandamos la nota
ETC-II
APM-Octubre-2007
Práctica 1
Práctica 1: Diseño del teclado
Hacer un programa en ensamblador que dibuja un teclado en la pantalla (modo QVGA / VGA) y que detecta las teclas introducidas por el usuario.
Este programa llamará al driver ‘driver.com’ que se encargará de reproducir las notas por el altavoz. Este driver se proporcionará a los alumnos.
APM-Septiembre-2009
ETC-II
APM-Octubre-2007
Práctica 1 objetivos
Práctica 1: Objetivos
1. Detectar instalación correcta del driver:1. Vector interrupción distinto de cero.2. Comprobación palabra clave.3. Comprobación Identificador del driver.
1. Dibujar el teclado (Texto o QVGA)2. Leer teclas asignadas y mandar orden al simulador3. Leer el estado del simulador para mostrar el estado del teclado4. Implementar funciones duración y tono.5. Usar Makefile y Depurador (TD)
Opcional: Melodías pre-seleccionadasTeclado ampliadoSonidos a otras escalasEfectos…
APM-Septiembre-2009
ETC-II
APM-Octubre-2007
Práctica 1 Ejemplo
APM-Septiembre-2009
Estado nota
Lo gestiona el simulador pero lo lee el programa
Driver en memoria
ETC-II
APM-Octubre-2007
Práctica 1 entregables
Práctica 1: Entregables
Programa: piano.asmFichero: MakefileLibrerias: Opcionales (VGA/Texto , Teclado, …)
Simulador
driver.com(INT 61H)
Generador Notas musicales
Práctica 1
Teclado Electrónico
APM-Septiembre-2009
ETC-II
APM-Octubre-2007
Práctica 1: Estructura Driver
APM-Septiembre-2009
1. Se accede mediante interrupción software: INT61H
2. Nos ofrece servicios, seleccionables por el registro AH
3. Resto de registro para paso de parámetros
1.Configura vector2.Deja parte residente en memoria
Estructura Driver
Parte 1: Instalación
Parte 2: Residente en memoria
Palabra de seguridad 0FECAH
ETC-II
APM-Octubre-2007
Práctica 1: Servicios del Driver
APM-Septiembre-2009
Servicios Driver Parámetros entrada Salida
INT 61H AH AL CX Salida
Identificación 0 --- --- AX = 0EE01H
Desinstalar 1 --- --- AH = 00H
Play Nota 2 Nota (1..13) --- AH = 00H
Play Frec 3 --- Frec (*) AH = 00H
Stop 4 --- --- AH = 00H
Duración 51 rápido2 normal3 lento
--- AH = 00H
Escala 61 aguda2 normal3 grave
--- AH = 00H
Estado 7 --- ---AH = 00H
AL = 01 suenaAL = 0 no suena
ETC-II
APM-Octubre-2007
Práctica 1: Comprobación Driver
APM-Septiembre-2009
Offset
Segmento
Int #0
Int #1
Int #61H
2 bytes
0
2
4
6
184H
186H
Tabla Interrupciones
0FECAH +3
IRET
Servicios Driver
MOV AH, 0INT 61HCMP 0EE01H
1º
2º
3º Comprobamos Servicio Identificación
Comprobamos que hay algo en memoria Memoria
ETC-II
APM-Octubre-2007
Práctica 2
Práctica 2: Diseño driver generador de notas
Hacer un driver que use el TMR2 y el RTC para generar un tono a la frecuencia de cada nota musical. Este driver sustituirá al proporcionado en la práctica anterior.
Opcional: Que el driver saque sonidos por el puerto paralelo
Práctica 2Driver
INT 61H
Generador Notas musicales por TMR y RTC
Práctica 1
Teclado Electrónico
APM-Septiembre-2009
ETC-II
APM-Octubre-2007
Práctica 3
Práctica 3: Interacción de Ensamblador con el Lenguaje C
Hacer un programa en C y una librería intermedia que llame al driver anterior y reproduzca canciones escritas en un fichero.
Opcional: Tener un teclado y poder reproducir y guardar canciones.
Driver INT 61H
Generador Notas musicales por TMR y RTC
Practica 3
Programa en C para
leer canciones de fichero
Librería en ASM que hace de interfaz
entre C y el driver
APM-Septiembre-2009