Está en la página 1de 23

UNIVERSIDAD NACIONAL DE PIURA

FACULTAD DE INGENIERA INDUSTRIAL


ESCUELA PROFESIONAL DE INGENIERA INFORMTICA

INTRODUCCION
El teclado es uno de los dispositivos ms usados y conocidos
en el mundo de la informtica. Su misin es la de interfaz
entre el usuario y la maquina. Es decir la comunicacin entre
ambos.
Para llevar a cabo esta comunicacin, el primer paso es la
activacin de la tecla por parte del usuario. De ello resulta
una seal elctrica que expresa la posicin de la tecla, esta
seal se gestiona en el procesador del teclado, que se
encuentra directamente en el.
El presente trabajo de investigacin, consta en su contenido
sobre las interrupciones y funciones que se asocian al
teclado y podernos dar cuenta de la importancia de las de
las mismas que nacen de la necesidad de ejecutar un
proceso en un instante preciso, y por tanto se considera su
intervencin. Cuando termina la ejecucin de este proceso,
la CPU vuelve al programa principal, continuando su tarea
cclica justo donde se dejo.
Tambin cabe sealar que abordaremos temas tales como:
interrupciones de Intel 8086 y como es que se gestionan,
conoceremos acerca de buffer del teclado y su estado, as
como tambin la interrupcin 16h que maneja la entrada y

Interrupciones del procesador

Interrupcin.Evento que altera la secuencia en el


momento que el procesador ejecuta las
instrucciones. Es generada por el
hardware del sistema de cmputo.

Esto es lo que pasa cuando


ocurre la interrupcin

El sistema operativo toma el control (es decir, el hardware


pasa el control al sistema operativo).
El sistema operativo guarda el estado del proceso
interrumpido. En muchos sistemas esta informacin se
guarda en el bloque de control de proceso interrumpido.
El sistema operativo analiza la interrupcin y transfiere el
control a la rutina apropiada para atenderla; en muchos
sistemas actuales el hardware se encarga de esto
automticamente.
La rutina del manejador de interrupciones procesa la
interrupcin.
Se restablece el estado del proceso interrumpido (o del
siguiente proceso).
Se ejecuta el proceso interrumpido (o el siguiente proceso).

Clases de Interrupciones
Existen seis clases de interrupciones:

Interrupciones SVC (supervisor call,


llamadas al supervisor).
Interrupciones de E/S.
Interrupciones externas.
Interrupciones de Reinicio.
Interrupciones de verificacin del
programa.
Interrupciones de verificacin de la
mquina.

QUE SON LAS INTERRUPCIONES DEL INTEL 8086?

Son seales enviadas por alguno de los perifricos que advierten


al procesador que ha habido actividad en dicho perifrico.

Por ejemplo cuando pulsamos alguna tecla, el teclado enva una


seal de que ha sido pulsada una tecla a su vez enva el cdigo
binario de la tecla pulsada.

CMO SE GESTIONAN LAS INTERRUPCIONES DEL INTEL 8086?

Las interrupciones del Intel 8086 se gestionan por el Controlador


de interrupciones.

Dicho controlador tiene cuatro registros (memorias) de 16 bits


cada uno. Cada uno de estos registros tiene una funcin
especfica y gracias a ellos se van a gestionar funciones como las
prioridades de los perifricos, peticiones de servicio etc.

Registro
IRR

Registro
IMR

Los
Registro

Registro
IPR

Registro
ISR

Registro
de
Control

marca las peticiones


de los perifricos

est en el puerto 21h y da


permisos a las peticiones
de las interrupciones. Pasa
si es 0 y no pasa si es 1.
lgica que selecciona la
prioridad
marca que
peticiones se estn
activando
est en el puerto 20h y es
el encargado de avisar al
procesador que ha
ocurrido una interrupcin

CICLO DE RECONOCIMIENTO DE INTERRUPCIN

1.- Tras la activacin de una lnea IR, el controlador activa la salida INTR
sealndole a la CPU la existencia de una interrupcin activada.
2.- Al recibir la seal, el procesador da un pulso en su salida INTA indicando que
comienza un ciclo de reconocimiento de interrupcin. (En el modo mximo la
respuesta ser el cdigo de reconocimiento de interrupcin en las seales S0-2
que ser utilizado por el controlador de bus para generar la seal INTA)
3.- Al recibir el controlador el pulso por su entrada INTA comienza a arbitrar las
interrupciones recibidas y selecciona la ms prioritaria.
4.- Se emite un segundo pulso por la lnea INTA del procesador (o controlador
de bus) que utiliza el controlador para depositar en el bus el vector
correspondiente a la interrupcin de mayor prioridad.
5.- El procesador obtiene la direccin de la rutina de interrupcin a partir de
este dato y salta a ella. Almacena el registro de flags y la direccin de retorno,
deshabilita las interrupciones y comienza a ejecutar la rutina.

El teclado se comunica con la BIOS a travs de


puertos de comunicacin controlados por las
interrupciones de la BIOS.

EL
TECLADO

Cada vez que se pulsa una tecla se generan dos


bytes de informacin sobre la tecla pulsada:

El identificador de la tecla llamado tambin


byte auxiliar o primer cdigo.
El cdigo ASCII correspondiente a esa tecla si
existe llamado tambin byte auxiliar o
segundo cdigo.

EL TECLADO

En el caso de que el segundo cdigo sea cero, ello indica


que la tecla es especial y que no existe cdigo ASCII
asociado como por ejemplo las teclas de funciones, las
teclas de control del cursor, etc. En este caso deben de
examinarse el primer cdigo que es normalmente el
identificador de la tecla y que se llama cdigo extendido.

En el teclado se pueden pulsar combinaciones de teclas,


estas teclas se llaman modificadores (Alt, Shift, Ctrl...).

En el caso de que se teclee directamente el cdigo ASCII


(alt + nmero decimal del cdigo), el primer cdigo ser
cero y el segundo cdigo contiene el cdigo tecleado.

BUFFER DEL TECLADO

El cdigo de las teclas que se van


pulsando en el teclado, pasan a una
memoria o buffer de 30 bytes, si cada
tecla tiene dos bytes asociados, esta
memoria o buffer podr guardar los
cdigos correspondientes a las ltimas 15
teclas pulsadas

Distribucin de los bits


dentro del byte
KB_FLAG

0. Tecla Shift derecha (Pulsado = 1).


1. Tecla Shift izquierda (Pulsado = 1).
2. Tecla CTRL (Pulsado = 1).
3. Tecla ALT (Pulsado = 1).
4. Tecla Bloque Desplazamiento (Encendido = 1)
5. Tecla Bloque Numrico (Encendido = 1)
6. Tecla Bloque Maysculas (Encendido = 1)
7. Tecla Insertar (Encendido = 1)

BYTES DE
ESTADO DEL
TECLADO

Distribucin de los bits


dentro del byte
KB_FLAG_1

0. No se usa.
1. No se usa.
2. No se usa.
3. CTRL Bloque numrico (Encendido = 1).
4. Tecla Bloque Desplazamiento (Pulsado = 1).
5. Tecla Bloque Numrico (Pulsado = 1).
6. Tecla Bloque Maysculas (Pulsado = 1).
7. Tecla Insertar (Pulsado = 1).

INTERRUPCIONES ASOCIADAS AL
TECLADO
Tiene dos significados distintos, aunque relacionados:

Para software de alto nivel, es una condicin especial (a


menudo un cdigo de error o una excepcin , generada
normalmente desde el teclado. La combinacin usada suele ser
Control-C (de 'Cancelar'). Se usa en algunos lenguajes de
programacin para permitir salir de un bucle infinito o programa
muy largo en el interprete de comandos sin tener que finalizar
todo el proceso.

Para software de bajo nivel y hardware, una interrupcin de


teclado es la interrupcin que se genera cada vez que se
presiona alguna tecla (no necesariamente una combinacin
especial) para ayudar a la CPU a manejar la entrada. Una de
estas interrupciones puede generar la propagacin de una
interrupcin de las anteriores.

INTERRUPCIONES ASOCIADAS AL TECLADO


se encarga de
controlar el teclado
del PC
Int
16h

Lista de
servicios de la
INT 16h

se encarga de
recoger las
pulsaciones del
teclado
obtener el estado
del buffer del
teclado, etc.

AH = 00h

Teclado

Leer pulsacin de tecla

AH = 01h

Teclado

Obtener el estado del buffer


del teclado

AH = 02h

Teclado

Obtener el estado del teclado

AH = 03h

Teclado

Establecer factor de
repeticin

AH = 05h

Teclado

Simular la pulsacin de una


tecla

AH = 0Ah

Teclado

Obtener el ID del teclado

AH = 10h

Teclado expandido

Leer carcter del teclado


expandido

AH = 11h

Teclado expandido

Obtener estado del buffer del


teclado expandido

AH = 12h

Teclado expandido

Obtener estado del teclado


expandido

COMPROBAR SI HAY CARACTERES EN EL BUFFER DEL


TECLADO

Con este servicio podemos examinar el buffer del teclado para saber
si hay alguna tecla que ha sido pulsada y an no ha sido
atendida.

Entrada:
AH = 01h

Salida: Si el buffer est vaco pone ZF = 1.


Si el buffer no est vaco pone:
ZF = 0.
AH = byte auxiliar de la tecla pulsada.
AL = Cdigo ASCII del carcter pulsado.

LECTURA DEL BYTE DE ESTADO DEL


TECLADO
Con este servicio podemos leer el byte de estado del teclado
KB_FLAG que nos informa del estado de pulsacin o no de las
teclas modificadoras.

Entrada: AH = 02H

Salida: AL = byte de estado del teclado

LEER UN CARCTER DEL TECLADO SIN ECO Y SIN CHEQUEO DE BREAK

Esta funcin no espera a que se pulse una tecla en el caso de que se


haya pulsado alguna tecla, el carcter quedar recogido en AL,
pero si no ha sido pulsada ninguna tecla el registro AL quedar a
cero.

Entrada: AH = 06H

Salida: AL = Carcter tecleado (0 si no se ha pulsado nada).

ESPERAR PARA LEER CARCTER DEL


TECLADO SIN ECO Y SIN CONTROL DE
BREAK
Espera a que el usuario pulse una tecla y la devuelve en AL sin
escribirla en pantalla y sin atender a posibles pulsaciones de
CTRL + Break.

Entrada: AH = 07H

Salida: AL = Carcter tecleado (0 si no se ha pulsado nada).

ESPERAR PARA LEER CARCTER DEL TECLADO SIN ECO Y SIN CONTROL DE
BREAK

Espera a que el usuario pulse una tecla y la devuelve en AL sin


escribirla en pantalla y sin atender a posibles pulsaciones de
CTRL + Break.

Entrada: AH = 07H

Salida: AL = Carcter tecleado (0 si no se ha pulsado nada).

LEER CARACTERES DE TECLADO Y


ALMACENARLOS EN MEMORIA
Espera a que el usuario teclee una serie de caracteres
finalizados por la tecla ENTER y los almacena en una zona
de memoria. Estos caracteres quedan almacenados en la
direccin indicada en DS:DX y el primer byte de esta zona
de memoria indica el nmero mximo de caracteres que
caben incluido el enter. Tras llamar a esta funcin, el
segundo byte de este bloque de memoria especifica el
nmero de caracteres que el usuario a tecleado y que
comienzan a partir del tercer byte.

Entrada: AH = 0AH
DS:DX= direccin del rea de memoria.

CHEQUEA SI HAY ALGN CARCTER


DISPONIBLE (CON CHEQUEO DE CTRL +
BREAK)
Comprueba si el usuario ha tecleado algn carcter y devuelve el
valor FFh en el registro AL en el caso de que haya alguno
esperando cero si el buffer del teclado est vaco.

Entrada:
AH = 0BH

Salida: AL = FFh si carcter disponible.


AL = 00h si carcter no disponible.

EJEMPLO
Este ejemplo lee una tecla del teclado y si la tecla pulsada es la de la tecla "" hace las
Modificaciones para que el contenido en AL sea la .
inicio:
CALL leertecla
MOV AH,0Eh
INT 10h
JMP inicio
leertecla:
XOR AX,AX
INT 16h

;Llamamos a la funcion de leer una tecla


;Funcionteletype
;Mostramos la tecla en pantalla
;Hacemos un bucle eterno
;Funcion 0
;Llamamos al teclado

CMP AH,27h
JE cambiarletra

;El scancode corresponde con el scancode de la tecla ""?


;S, as que cambiamos el contenido de AL

RET

;No, as que no realizamos otra operacin

cambiarletra:
MOV AL,0A4h
RET

;Ponemos la letra "" en AL


;Volvemos de la rutina