Universidad Aut - PowerPoint PPT Presentation

About This Presentation
Title:

Universidad Aut

Description:

... compilaci n tasm /zi teclado.asm para generar el fichero teclado.obj (suponiendo que el archivo que contiene la libreria se llame teclado.asm) ... – PowerPoint PPT presentation

Number of Views:50
Avg rating:3.0/5.0
Slides: 29
Provided by: Andr255
Category:
Tags: aut | tasm | universidad

less

Transcript and Presenter's Notes

Title: Universidad Aut


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

Septiembre-2009
2
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 Progra
mació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
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

PC

Señal Eléctrica conectada al altavoz
Onda sonora
Septiembre-2009
4
Escala musical temperada
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
12
Relación entre una nota y la siguiente
2
f
2f
Septiembre-2009
5
Estructura Proyecto
Teclado Electrónico
Práctica 1
Práctica 2
Mandamos la nota Servicios Int 61H
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
Mandamos la nota
Septiembre-2009
6
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
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

Septiembre-2009
8
Práctica 1 Ejemplo
Driver en memoria
Estado nota
Lo gestiona el simulador pero lo lee el programa
Septiembre-2009
9
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
Práctica 1 Estructura Driver
Estructura Driver
  • Se accede mediante interrupción software INT61H
  • Nos ofrece servicios, seleccionables por registro
    AH
  • Resto de registro para paso de parámetros

Parte 2 Residente en memoria
Palabra de seguridad 0FECAH
  • Configura vector
  • Deja parte residente en memoria

Parte 1 Instalación
Septiembre-2009
11
Práctica 1 Servicios del Driver
Servicios Driver Parámetros entrada Parámetros entrada 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 5 1 rápido 2 normal 3 lento --- AH 00H
Escala 6 1 aguda 2 normal 3 grave --- AH 00H
Estado 7 --- --- AH 00H AL 01 suena AL 0 no suena
Septiembre-2009
12
Práctica 1 Comprobación Driver

Comprobamos que hay algo en memoria
Memoria
2 bytes
Tabla Interrupciones
0
Int 0
2

4
Servicios Driver
Int 1
6
0FECAH
3
Offset
184H
Int 61H
Segmento
186H
IRET

Comprobamos Servicio Identificación
MOV AH, 0 INT 61H CMP AX,0EE01H
Septiembre-2009
13
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.

Septiembre-2009
14
Ejemplo de libreria
Solo segmento de código
No hay punto de entrada
GetKey es accesible el resto no
Septiembre-2009
15
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
Ejemplo de libreria
Programa.asm
Indico función externa
Llamada a la función. Cómo si fuese una interna
Septiembre-2009
17
Makefiles
  • 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

18
Makefiles
  • 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 lt
  • .obj.lib
  • TLIB .lib -lt

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
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
Práctica 2 Interrupciones involucradas
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-softwar
e No PIC, no EOI, IRET, asíncrona
Septiembre-2009
21
Práctica 2 Estructura Driver
Estructura Driver
  • Se accede mediante interrupción software INT61H
  • Nos ofrece servicios, seleccionables por registro
    AH
  • Resto de registro para paso de parámetros

Parte 2 Residente en memoria
Palabra de seguridad 0FECAH
  • Configura vectores interrupción
  • Deja parte residente en memoria

Parte 1 Instalación
Septiembre-2009
22
Práctica 2 Segmento de datos
PUSH DS MOV AX,CS MOV DS,AX MOV
AX,DATO2 POP DS IRET
MOV AX,DATO1 INT 61h
MOV AX,DATO2 IRET
2
Programa Principal
Driver
DATO2
DATO1
1
3
2
DS CS ES SS
Septiembre-2009
23
Práctica 2 El Temporizador (TMR 8253)
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 -gt controla el reloj sistema -gt INT8
-gt INT 1Ch 41h Contador 1-gt Refresco memoria
RAM 42h Contador 2 -gt Generación de tonos en
el altavoz 43h Registro de control Se accede
a ellos mediante las instrucciones IN/OUT
18.2Hz (INT 1CH)
0
1
Amplificador y Filtro
Puerto 42h
2
Puerto 61h
7 1 0
Septiembre-2009
24
Práctica 2 Temporizador Registro de Control
SC1 SC0 RL1 RL0 M2 M1 M0 BCD
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 -gt Aestable, generador de
onda cuadrada) BCD Cuenta en modo BCD
Septiembre-2009
25
Práctica 2 Reloj en Tiempo Real (RTC)
  • 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). PIE1, SQWE0
  • 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

Septiembre-2009
26
Práctica 2 Controlador Interrupciones (PIC)
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)
Septiembre-2009
27
Práctica 2 Controlador Interrupciones (PIC)
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 P
IC 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
Septiembre-2009
28
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
Write a Comment
User Comments (0)
About PowerShow.com