Bueno, no me acuerdo bien, bien, las diferencias, pero el teclado lo podes acceder por medio de al menos tres interrupciones:
la 9h (creo que la de más bajo nivel y devuelve sólo el código de scan, no el ASCII). Creo que ésta se activa por hard.
la 16h que (si mal no recuerdo) sí retorna el ASCII. Creo que la llama la int 9h luego del servicio para mandar datos al buffer de teclado que se encuentra en RAM.
y la 21h que es la estándar del DOS y permite leer caracteres y strings. Lee datos de la cola (el buffer), no lo hace directo del teclado.
Bueno, espero te sirva...