Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Actividad 24
Objetivo
Caracterizar el manejo del teclado PS/2 mediante interrupciones.
Bibliografía
[1] Los microprocesadores de Intel. Arquitectura, programación e interfaces. Epígrafes
10.1 y 10.2
[2] The Indispensable PC Hardware Book. Hans Peter Messmer. Capítulos 21 y 34
[3] I/O Ports and Controllers on IBM Compatibles and PS/2. EVA
Contenido
mov ax,0
mov es,ax
mov ax,dirección_rutina
mov [es:interrupción*4],ax
mov [es:interrupción*4+2],cs
Pero ¿Cómo manejar el hardware externo una vez que se captura la interrupción
correspondiente? La bibliografía [3] contiene un listado bastante amplio de varios
puertos y la manera de usar los controladores correspondientes. Para la actividad y la
asignatura son importantes los puertos:
Puerto Controlador
20h/21h : A0h/A1h Controladores de interrupción
40h/43h Temporizador del sistema*
60h/64h Teclado
70h/71h Reloj de tiempo real
*Orientación de estudio independiente a través de un ejercicio
La configuración por defecto de los controladores de interrupción mapea las IRQ como
muestra la tabla en la sección correspondiente en [3] (línea 174) y necesitan que se les
envíe a los puertos 20h y a0h un valor especial llamado fin de interrupción para que
puedan detectar las IRQs nuevamente, una vez que han generado una interrupción. Otra
cuestión importante es el hecho que en cualquier momento pueden enmascararse las
IRQ, estableciendo un valor en los puertos 21h y/o a1h. Así por ejemplo la secuencia:
mov al,10111100b ; Habilitar floppy(bit 6), teclado (bit 1) y timer (bit 0)
out 21h,al
mov al,11101110b ; Habilitar ratón(bit 4) y reloj de tiempo real(bit 0)
out 0a1h,al
Provocaría que solo se generen las interrupciones correspondientes a las IRQs
“marcadas” con cero. Nótese que además se puede ilustrar la diferencia de procedimiento
comparado con la entrada/salida mapeada en memoria.
Para deshabilitar o habilitar las interrupciones hardware se utiliza la bandera de
interrupción, pero el procedimiento más común es mediante las instrucciones:
Instrucción Acción
sti Hace I=1. Se reconocen las interrupciones hardware
cli Hace I=0. Se ignoran las interrupciones hardware
Por defecto, las interrupciones correspondientes a las IRQ del temporizador, el teclado y
el reloj de tiempo real son:
IRQ Interrupción
irq0(timer) int 8
irq1(teclado) int 9
irq8(reloj de timpo real) int 70h
Lo que significa que si se modifica el vector correspondiente con una subrutina propia,
esta se ejecutará cada vez que ocurra la interrupción.
Uno de los dispositivos más versátiles y longevos de los sistemas de cómputo es el
teclado, al punto que desde el surgimiento de las primeras computadoras electrónicas no
mov al,[si+keymap]
mov [es:di],al ; es=b800h, se muestran en
; pantalla los caracteres
add di,2
mov al,20h
out 20h,al
iret
keymap: db 0
db 27,'1234567890-=',8
db 9,'qwertyuiop[]',10
db 0,'asdfghjkl;',39,96,0,'\'
db 'zxcvbnm,./',0,'*',0,' '
db 0,'2345678901',0,'3789-456+1230.'
Estudio Independiente
1. Escriba y pruebe una subrutina para utilizar las teclas del 1 al 7 de modo que al
liberarlas, se modifique el color de la pantalla en modo gráfico con el valor
correspondiente al número de la tecla.
2. Escriba y pruebe una subrutina para introducir textos en modo 3 y que la tecla ENTER
provoque un cambio de línea.
3. (*)Escriba una subrutina para desplazar un texto horizontal, en modo 3, como una
marquesina. La tecla ESPACIO será utilizada para pausar o continuar el
desplazamiento del texto. Se recomienda utilizar también la int 8.