La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

ETC-II APM-Octubre-2007 Universidad Autónoma de Madrid Escuela Politécnica Superior ETC-II Septiembre-2009 Laboratorio de Estructura y Tecnología de Computadores.

Presentaciones similares


Presentación del tema: "ETC-II APM-Octubre-2007 Universidad Autónoma de Madrid Escuela Politécnica Superior ETC-II Septiembre-2009 Laboratorio de Estructura y Tecnología de Computadores."— Transcripción de la presentación:

1 ETC-II APM-Octubre-2007 Universidad Autónoma de Madrid Escuela Politécnica Superior ETC-II Septiembre-2009 Laboratorio de Estructura y Tecnología de Computadores Proyecto Piano

2 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 driver Aprender la interacción con los recursos hardware Aprender la interacción entre C y Lenguaje ensamblador Conocimientos: Programación y depuración 8086 Funcionamiento de interrupciones software Comunicación con programas residentes Timer del PC (interrupción 0x1C, generación de sonidos) RTC Uso de la pila para paso de parámetros Septiembre-2009

3 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 Septiembre-2009 Onda sonora Señal Eléctrica conectada al altavoz PC

4 ETC-II APM-Octubre-2007 Escala musical temperada Septiembre-2009 NotaFrec HzTecla 1DO261,626C 2DO#277,183C# 3RE293,665D 4RE#311,127D# 5MI329,628E 6FA349,228F 7FA#369,994F# 8SOL391,995G 9SOL#415,305G# 10LA440A 11LA#466,164A# 12SI493,883B 13DO523,251 f2f 12 2 Relación entre una nota y la siguiente

5 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 Septiembre-2009 Teclado Electrónico Práctica 2 Práctica 1 Mandamos la nota Servicios Int 61H Mandamos la nota

6 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 ‘sonido.com’ que se encargará de reproducir las notas por el altavoz. Este driver se proporcionará a los alumnos. Septiembre-2009

7 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 simulador 3.Leer el estado del simulador para mostrar el estado del teclado 4.Implementar funciones duración y tono. 5.Usar Makefile y Depurador (TD) Opcional: Melodías pre-seleccionadas Teclado ampliado Sonidos a otras escalas Efectos… Septiembre-2009

8 ETC-II APM-Octubre-2007 Práctica 1 Ejemplo Septiembre-2009 Estado nota Lo gestiona el simulador pero lo lee el programa Driver en memoria

9 ETC-II APM-Octubre-2007 Práctica 1 entregables Práctica 1: Entregables Programa: piano.asm Fichero: Makefile Librerias: Opcionales (VGA/Texto, Teclado, …) Simulador Drvmio.com INT 61H Generador Notas musicales Práctica 1 Teclado Electrónico Septiembre-2009

10 ETC-II APM-Octubre-2007 Práctica 1: Estructura Driver Septiembre-2009 1.Se accede mediante interrupción software: INT61H 2.Nos ofrece servicios, seleccionables por registro AH 3.Resto de registro para paso de parámetros 1.Configura vector 2.Deja parte residente en memoria Estructura Driver Parte 1: Instalación Parte 2: Residente en memoria Palabra de seguridad 0FECAH

11 ETC-II APM-Octubre-2007 Práctica 1: Servicios del Driver Septiembre-2009 Servicios DriverParámetros entradaSalida INT 61HAHALCXSalida Identificación0--- AX = 0EE01H Desinstalar1--- AH = 00H Play Nota2Nota (1..13)---AH = 00H Play Frec3---Frec (*)AH = 00H Stop4--- AH = 00H Duración5 1 rápido 2 normal 3 lento ---AH = 00H Escala6 1 aguda 2 normal 3 grave ---AH = 00H Estado7--- AH = 00H AL = 01 suena AL = 0 no suena

12 ETC-II APM-Octubre-2007 Práctica 1: Comprobación Driver 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, 0 INT 61H CMP AX,0EE01H 1º 2º 3º Comprobamos Servicio Identificación Comprobamos que hay algo en memoria Memoria

13 ETC-II APM-Octubre-2007 Práctica 1: Librerías Una librería mantiene una estructura muy parecida a la de un programa normal, pero con algunas características especiales: 1.Es un archivo fuente.ASM que generalmente sólo lleva la definición del segmento de código, ya que comparte pila y segmento de datos con el programa principal que llama a las funciones de la misma. 2.Las funciones que queramos exportar o hacer visibles se declaran como PUBLIC en el archivo fuente de la librería. 3.Los programas que quieran llamar a esas funciones las tendrán que declarar como EXTERN 4.Una librería se compila con el TASM primero y una vez obtenido el.OBJ se encapsula en un fichero.LIB mediante el comando TLIB. Septiembre-2009

14 ETC-II APM-Octubre-2007 Ejemplo de libreria Septiembre-2009 GetKey es accesible el resto no No hay punto de entrada Solo segmento de código

15 ETC-II APM-Octubre-2007 Ejemplo de librería: compilación tasm /zi teclado.asm para generar el fichero teclado.obj (suponiendo que el archivo que contiene la libreria se llame teclado.asm) tlib teclado.lib -+teclado.obj para generar el fichero teclado.lib que es la librería encapsulada. El - + indica re-emplazo, es decir, si dentro del archivo teclado.lib ya existe una función GetKey procede a su reemplazo por la nueva versión. En caso de que no exista la añade directamente. tlink /v program.obj teclado.lib Una vez que se tiene el archivo teclado.lib se podrá compilar cualquier programa que use funciones de la librería. Septiembre-2009

16 ETC-II APM-Octubre-2007 Ejemplo de libreria Septiembre-2009 Programa.asm Indico función externa Llamada a la función. Cómo si fuese una interna

17 ETC-II APM-Octubre-2007 La herramienta make – entorno de compilación, – nos permite hacer la compilación de un programa más sencilla – permitir definir en un fichero una serie de reglas o pasos de compilación para que a partir de una serie de archivos fuente se obtenga el fichero o ficheros ejecutables. Las reglas está contenidas en un fichero que tiene que llamarse Makefile y que será llamado por defecto al ejecutar el comando make. Cuidado, Makefile sin extensión. Un ejemplo sencillo de fichero Makefile es: test.exe: test.obj tlink /v test.obj test.obj: test.asm tasm /zi test.asm clean: del *.obj del test.exe Si tecleamos make clean, nos aseguramos de partir de un punto limpio Makefiles

18 ETC-II APM-Octubre-2007 # Ejemplo de fichero Makefile all: drvmio.com test.exe drvmio.com: drvmio.obj TLINK /t /v drvmio.obj test.exe: test.obj teclado.lib TLINK /V test.obj teclado.lib.asm.obj: TASM /zi $<.obj.lib: TLIB $&.lib -+$< clean: del *.obj del *.map del *.exe del *.lib del *.com Makefiles Si ponemos make all se ejecutan todos estos procesos Proyecto 1: drvmio.com Proyecto 2: test.exe Reglas de construcción genéricas Limpieza

19 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 2 Driver INT 61H Generador Notas musicales por TMR y RTC Práctica 1 Teclado Electrónico Septiembre-2009

20 ETC-II APM-Octubre-2007 Práctica 2: Interrupciones involucradas Septiembre-2009 Interrupción 61h: Driver Acceso a las funciones del driver desde programas externos Interrupción software. No PIC, no EOI, IRET, síncrona. Hay que instalar la interrupción Interrupción 70h: Reloj Tiempo Real (RTC) Cada vez que suene una nota se activará para medir el tiempo que tiene que sonar. Cuando salte ‘n-veces’ la interrupción desactivaremos el sonido. Hay que instalar la interrupción y configurar los PIC, los registros A y B del RTC con la interrupción PIE del mismo. Interrupción hardware: PIC, EOI, IRET, asíncrona Interrupción 1Ch: Generada por el TMR (INT 08h) Se llama 18.2/seg y nos servirá para hacer efecto gráfico. Se configura al instalar el driver, y se desactiva al desinstalar el driver. Hay que instalar la interrupción. Pseudo-software: No PIC, no EOI, IRET, asíncrona

21 ETC-II APM-Octubre-2007 Práctica 2: Estructura Driver Septiembre-2009 1.Se accede mediante interrupción software: INT61H 2.Nos ofrece servicios, seleccionables por registro AH 3.Resto de registro para paso de parámetros 1.Configura vectores interrupción 2.Deja parte residente en memoria Estructura Driver Parte 1: Instalación Parte 2: Residente en memoria Palabra de seguridad 0FECAH

22 ETC-II APM-Octubre-2007 PUSH DS MOV AX,CS MOV DS,AX MOV AX,DATO2 POP DS IRET Práctica 2: Segmento de datos Septiembre-2009 Programa Principal Driver DATO2DATO1 DS CS ES SS 1 MOV AX,DATO1 INT 61h … MOV AX,DATO2 IRET 2 2 3

23 ETC-II APM-Octubre-2007 Práctica 2: El Temporizador (TMR 8253) Septiembre-2009 El Chip 8253 contiene tres temporizadores de 16-bits Lo vamos a usar para generar sonidos. Registros internos (Accesibles directamente en los puertos siguientes): 40h : Contador 0 -> controla el reloj sistema -> INT8 -> INT 1Ch 41h : Contador 1-> Refresco memoria RAM 42h : Contador 2 -> Generación de tonos en el altavoz 43h : Registro de control Se accede a ellos mediante las instrucciones IN/OUT Amplificador y Filtro Puerto 61h 7 1 0 0 1 2 18.2Hz (INT 1CH) Puerto 42h

24 ETC-II APM-Octubre-2007 Práctica 2: Temporizador Registro de Control Septiembre-2009 SC1..SC0: Seleccionan el contador que vamos a configurar 0 0 : Contador 0 0 1 : Contador 1 1 0 : Contador 2 1 1 : Sin uso RL1..RL0: Modo de acceso a los contadores 0 0 : Captura de la cuenta en un latch (leer sin para contador) 0 1 : Leer/Escribir el byte más significativo 1 0 : Leer/Escribir el byte menos significativo 1 1 : Leer/Escribir ambos bytes (primero menos significativo) M2..M0: Modo de funcionamiento (x11 -> Aestable, generador de onda cuadrada) BCD: Cuenta en modo BCD SC1SC0RL1RL0M2M1M0BCD

25 ETC-II APM-Octubre-2007 Práctica 2: Reloj en Tiempo Real (RTC) Septiembre-2009 El Chip MC146818 mantiene la hora del sistema cuando esta apagado Lo vamos a usar para temporizar la duración del sonido. Usaremos su capacidad de generar interrupciones hardware. Tiene 64 registros internos, de los cuales nosotros vamos a usar: Registro A (Dirección 10): Configuración general (Frecuencia) Frec. Osc. = 32.768khz Registro B (Dirección 11): Configuración interrupciones (PIE). PIE=1, SQWE=0 Registro C (Dirección 12): Estado (PIE). Con leer se borran los flags. El acceso a sus registros internos se hace indirectamente a través del puerto 70h y 71h mediante instrucciones IN/OUT. Para realizar lectura: Se escribe (OUT) en el puerto 70h la dirección de la posición que se desea leer. Se realiza una lectura en el puerto 71h. Para realizar una escritura Se escribe (OUT) en el puerto 70h la dirección de la posición que se desea escribir Se escribe (OUT) en el puerto 71h el dato que se quiere escribir

26 ETC-II APM-Octubre-2007 Práctica 2: Controlador Interrupciones (PIC) Septiembre-2009 Direcciones del PIC-0 (maestro): 20h y 21h Direcciones del PIC-1 (esclavo): A0h y A1h Interrupciones PIC-0: 08h (IR0), 09h (IR1)…0Fh (IR7) Interrupciones PIC-1: 70h (IR8), 71h (IR9)…7Fh (IR15)

27 ETC-II APM-Octubre-2007 Práctica 2: Controlador Interrupciones (PIC) Septiembre-2009 El RTC genera la interrupción 70h que proviene del PIC-esclavo. Para poderla recibir tenemos que configurar el PIC maestro y el esclavo. Para indicar que hemos recibido una interrupción tenemos que mandar EOI no especifico (OCW2 = 020h) al PIC esclavo y maestro. Configuración: PIC Maestro: 21h: Máscara de interrupción (habilitar entrada IR2 – esclavo) 20h: Mandar comandos (EOI no específico OCW2) PIC esclavo: A1h: Máscara de interrupción (habilitar entrada IR0 – RTC) A0h: Mandar comandos (EOI no específico OCW2) Ejemplo: IN AL, 021h ; Leo máscara interrupción del PIC maestro AND AL, 0FBh ; Pongo a cero (habilito) entrada del PIC esclavo OUT 020h,AL ; Guardo el valor en la máscara

28 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 Septiembre-2009


Descargar ppt "ETC-II APM-Octubre-2007 Universidad Autónoma de Madrid Escuela Politécnica Superior ETC-II Septiembre-2009 Laboratorio de Estructura y Tecnología de Computadores."

Presentaciones similares


Anuncios Google