Descargar

Estructura y Tecnología de Computadores

Enviado por Pablo Turmero


Partes: 1, 2

    edu.red

    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

    edu.red

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

    edu.red

    Escala musical temperada f 2f 12 2 Relación entre una nota y la siguiente

    edu.red

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

    edu.red

    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.

    edu.red

    Práctica 1 objetivos Práctica 1: Objetivos

    Detectar instalación correcta del driver: Vector interrupción distinto de cero. Comprobación palabra clave. Comprobación Identificador del driver.

    Dibujar el teclado (Texto o QVGA) Leer teclas asignadas y mandar orden al simulador Leer el estado del simulador para mostrar el estado del teclado Implementar funciones duración y tono. Usar Makefile y Depurador (TD)

    Opcional: Melodías pre-seleccionadas Teclado ampliado Sonidos a otras escalas Efectos…

    edu.red

    Práctica 1 Ejemplo Estado nota Lo gestiona el simulador pero lo lee el programa Driver en memoria

    edu.red

    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

    edu.red

    Práctica 1: Estructura Driver

    Se accede mediante interrupción software: INT61H

    Nos ofrece servicios, seleccionables por registro AH

    Resto de registro para paso de parámetros

    Configura vector Deja parte residente en memoria Estructura Driver Parte 1: Instalación Parte 2: Residente en memoria Palabra de seguridad 0FECAH

    edu.red

    Práctica 1: Servicios del Driver

    edu.red

    Práctica 1: Comprobación Driver 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

    edu.red

    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: 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. Las funciones que queramos exportar o hacer visibles se declaran como PUBLIC en el archivo fuente de la librería. Los programas que quieran llamar a esas funciones las tendrán que declarar como EXTERN 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.

    edu.red

    Ejemplo de libreria GetKey es accesible el resto no No hay punto de entrada Solo segmento de código

    edu.red

    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.

    edu.red

    Ejemplo de libreria Programa.asm Indico función externa Llamada a la función. Cómo si fuese una interna

    edu.red

    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

    Partes: 1, 2
    Página siguiente