Está en la página 1de 5

PROCESAMIENTO DE TECLADO (Avanzado)

Estado del Shift del teclado

Segmento 40:17h (teclado de 83 teclas)


Bit Acción Bit Acción
7 inserción activa 3 Alt presionada
6 Estado de BloqMayús activa 2 ctrl. Presionada
5 Estado de BloqNum activa 1 Shift izquierdo presionado
4 Estado se Scroll Lock activa 0 Shift derecho presionado

Segmento 40:18h (teclado de 101 teclas)


Bit Acción Bit Acción
7 Ins presionada 3 ctrl./ BloqNum (pausa) activa
6 BloqMayús presionada 2 SysReg presionada
5 BloqNum presionada 1 Alt Izquierda presionada
4 Scroll Lock presionada 0 ctrl. Izquierda presionada

INTERRUPCION 21h del dos para entrada desde el


teclado

FUNCION 01h INTERRUPCION 21h


ENTRADA DEL TECLADO CON ECO (REPETICIÓN EN PANTALLA)
(responde a ctrl+break)

AL ≠ 0: significa carácter ASCII estándar presente


Al = 0: Significa que se ha presionado una tecla función extendida.

MOV AH,01h ; petición de entrada del teclado


INT 21h ; interrupción que llama al DOS
CMP al, 00 ; ¿presionó tecla función?
JNZ . . . ; no, entonces es un carácter ASCII

FUNCION 06h INTERRUPCION 21h


E/S DIRECTA DE LA CONSOLA

K10: MOV AH,06h ; petición directa a la consola


MOV DL,0FFh ; entrada del teclado
INT 21h ; interrupción que llama al DOS
JZ K10 ; repetir si el búfer esta vacío
CMP AL,00 ; ¿presionó tecla función?
Jnz K30 ; no, entonces es carácter ASCII
INT 21H ; Si, repetir operación para el código de
rastreo

FUNCION 07h INTERRUPCION 21h


ENTRADA DIRECTA DESDE EL TECLADO SIN REPETICIÓN EN PANTALLA.

Funciona igual que la 01h, excepto que el carácter ingresado no se


repite en pantalla y no responde a una operación CTRL + Break.
Puede utilizarla para introducir una contraseña en donde no quiere
perturbar la pantalla.
1
FUNCION 08h INTERRUPCION 21h
ENTRADA DESDE EL TECLADO SIN REPETICIÓN EN PANTALLA.
Funciona igual que la 01h, excepto que el carácter ingresado no se
repite en pantalla.

FUNCION 0Ah INTERRUPCION 21h


ENTRADA DEL TECLADO MEDIANTE BUFER
No acepta teclas de función extendida.

FUNCION 0Bh INTERRUPCION 21h


VERIFICACION DEL ESTADO DEL TECLADO

Si AL=FF si el carácter esta disponible.


Si AL=00 si ningún carácter esta disponible.

FUNCION 0Ch INTERRUPCION 21h


LIMPIA EL BUFER DEL TECLADO Y LLAMA A UNA FUNCION

Se puede utilizar en asociación con la función 01h, 06h, 07h, 08h,


0Ah. En Al se carga la función que se necesita.

MOV AH,0Ch ; petición de entrada del teclado


MOV Al,función ; funcion que se necesita
MOV DX,KBarea ; Area de entrada de teclado
INT 21h ; Llama al DOS

INTERRUPCION 16h del BIOS para entrada desde el teclado

FUNCION 00h INTERRUPCION 16h


LEE un carácter
- Maneja las teclas del teclado de 83 teclas
- No repite el carácter en pantalla

Tecla presionada AH AL
Carácter ASCII normal Código de rastreo Carácter ASCCI
Tecla de función extendida Codigo de rastreo 00H

MOV AH,00h ; petición para leer


INT 16h ; Llama al BIOS
CMP Al,00h ; ¿Es una tecla de función extendida?
JE G40 ; si

FUNCION 01h INTERRUPCION 16h


DETERMINA SI UN CARÁCTER ESTA PRESENTE

- Semejante a la función 00H


- Si un carácter ingresado esta presente en el bufer de teclado
o ZF = 0
o AL = código del carácter
o AH = código de rastreo

2
- Si no esta presente un carácter
o ZF = 1
o No espera

FUNCION 02h INTERRUPCION 16h


REGRESA EL ESTADO ACTUAL DE LAS TECLAS SHIFT
- Regresa en Al el estado de la tecla Shift del teclado

MOV AH,02H ; Petición del estado del Shift


INT 16h ; interrupción que llama al BIOS
OR Al,00000011b ; ¿se presiono shift izq o der?
JE xxxx ; si

FUNCION 05h INTERRUPCION 16h


ESCRITURA EN EL TECLADO
- Inserta caracteres en el búfer del teclado como si se hubiese
presionado una tecla.
- El carácter ASCII se carga en CH y el código de rastreo en CL.

MOV AH,05h ; petición de escritura en el teclado


MOV CH,30h ; código ASCII
MOV CL,62h ; código de rastreo
INT 16h ; Llama al BIOS
FUNCION 10h INTERRUPCION 16h
LECTURA DE UN CARÁCTER DEL TECLADO
- Realiza lo mismo que la 00H, con la diferencia que acepta
teclas de función extendida.
- No repite el carácter en pantalla.

Tecla presionada AH AL
Carácter ASCII normal Código de rastreo Carácter ASCCI
Tecla de función extendida Codigo de rastreo 00H ó E0H

00h: f1 . . . f12
0E : RePág, Inicio, etc.

MOV AH,10h ; petición de lectura de un carácter


INT 16h ; Llama al BIOS
CMP AL,00H ; ¿es una tecla de funcion extendida?
JE G40 ; -si
CMP AL,E0H ; ¿es una tecla de función extendida?
JE G40 ; -si

FUNCION 11h INTERRUPCION 16h


DETERMINA SI ESTA PRESENTE UN CARACTER
Es la misma que la 01H, excepto que reconoce las funciones
extendidas del teclado ampliado.

FUNCION 12h INTERRUPCION 16h


REGRESA ESTADO PRESENTE DEL SHIFT DEL TECLADO
3
Es la misma que la 02H, regresa en AL el estado del shift del
teclado incluyendo el estado del shift extendido:

Bit Acción Bit Acción


7 SysReq presionada 3 ALT derecha presionada
6 BloqMayús presionada 2 CTRL derecha presionada
5 BloqNum presionada 1 Alt Izquierda presionada
4 Scroll Lock presionada 0 ctrl. Izquierda presionada

Ejemplo1.- prueba una tecla de función extendida:

MOV AH,10H ; Petición para entrar desde el teclado


INT 16H ; Llama al BIOS
CMP AL,00H ; ¿es una función extendida?
JZ salir ; si, entonces salir
CMP AL,0E0H ; ¿es una función extendida?
JZ Salir ; Sí, entonces salir

INTERRUPCION 09H Y EL BUFER DEL TECLADO

DIRECCIÓN EXPLICACIÓN
41Ah Dirección del inicio actual del búfer, la posición siguiente
para la INT 16h para leer
41Ch Dirección del final del búfer, la posición siguiente para la
INT 09h para almacenar un carácter ingresado.
41Eh Dirección del inicio del búfer del teclado: 16 palabras (32
bytes), aunque puede ser más largo. El búfer retiene los
caracteres del teclado y los códigos de rastreo como son
introducidos para lectura posterior por medio de la INT
16h. Se necesitan dos bytes para cada carácter y su código
de rastreo asociado:

Dirección de la Dirección del Dirección del


parte inicial parte final Búfer
41A. 41C 41E…

Las teclas Ctrl, Shift y Alt

40:17h [ShiftDere (bit0), ShiftIzq(bit1), control(bit2) y Alt(bit3)]

BIODATAS SEGMENT AT 40H


ORG 17H
ESTADO DB ?
BIODATAS ENDS

CODIGO SEGMENT PARA


ASUMME CS:CODIGO, DS:BIODATAS
ORG 100H
INICIO:
MOV AX,BIODATAS
MOV DS,AX
MOV AL,ESTADO ; obtiene el byte del teclado
TEST AL,00000011b ; verifica si se presionó shift
JNZ xxxxx
. . . . .
4
También se pueden examinar los bytes de estado del teclado ampliado
40:18h y 40:96h

También podría gustarte