Int 16h

INT 16h es la forma abreviada de la interrupción 0x16. Esta interrupción se encarga de controlar el teclado del PC.

Características

Esta interrupción se encarga de obtener funcionalidades básicas del teclado, es decir, se encarga de recoger las pulsaciones del teclado, obtener el estado del buffer del teclado, etc. La codificación estándar del teclado que ofrece la INT 16h es de un teclado Estadounidense. Para adaptar la codificación de la INT 16h a otro tipo de teclado (por ejemplo, un teclado español) hay que atender al scan-code de la tecla pulsada y realizar las operaciones convenientes para interpretar la tecla que se desea.

En los teclados de 101 letras o más, existen unas teclas que la INT 16h las interpreta como teclas expandidas, que tienen un scan-code distinto al de las teclas normales (por ejemplo, la tecla pausa).

Lista de servicios

AH = 00hTecladoLeer pulsación de tecla
AH = 01hTecladoObtener el estado del buffer del teclado
AH = 02hTecladoObtener el estado del teclado
AH = 03hTecladoEstablecer factor de repetición
AH = 05hTecladoSimular la pulsación de una tecla
AH = 0AhTecladoObtener el ID del teclado
AH = 10hTeclado expandidoLeer carácter del teclado expandido
AH = 11hTeclado expandidoObtener estado del buffer del teclado expandido
AH = 12hTeclado expandidoObtener estado del teclado expandido

INT 16h AH=00h - Leer pulsación de tecla

Parámetros:

AH = 00hLeer pulsación de tecla

Retorna:

AH = ??Scan-code de la tecla pulsada
AL = ??Caracter ASCII de la tecla pulsada

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              ;Llamamos a la funcion de leer una tecla
MOV AH,0Eh                  ;Funcion teletype
INT 10h                     ;Mostramos la tecla en pantalla
JMP inicio                  ;Hacemos un bucle eterno

leertecla:
XOR AX,AX                   ;Funcion 0
INT 16h                     ;Llamamos al teclado

CMP AH,27h                  ;¿El scancode corresponde con el scancode de la tecla "ñ"?
JE  cambiarletra            ;Sí, así que cambiamos el contenido de AL

RET                         ;No, así que no realizamos otra operación

cambiarletra:
MOV AL,0A4h                 ;Ponemos la letra "ñ" en AL
RET                         ;Volvemos de la rutina

Véase también

Enlaces externos

Este artículo ha sido escrito por Wikipedia. El texto está disponible bajo la licencia Creative Commons - Atribución - CompartirIgual. Pueden aplicarse cláusulas adicionales a los archivos multimedia.