Práctica 3: El teclado del PC

Pr´actica 3: El teclado del PC Gustavo Romero L´ opez Arquitectura y Tecnolog´ıa de Computadores 7 de junio de 2016 Gustavo Romero L´ opez Pr´ acti

1 downloads 141 Views 406KB Size

Recommend Stories


Maqueta: Adaptador de teclado del PC
LSP: Adaptador de teclado del PC Maqueta: Adaptador de teclado del PC 1. Introducción El teclado convencional del PC se conecta a la unidad central

ATAJOS DEL TECLADO EN WINDOWS
Blog: http://fjweb.blogspot.com/ Web: http://www.fjweb.es ATAJOS DEL TECLADO EN WINDOWS Los Atajos del teclado son combinaciones de teclas que podemo

CONTROLDEACCESOSPOR TECLADO
ELECTRONIC CIRCUITS CONTROL DE ACCESOS POR TECLADO. El DA-03 permite controlar el acceso por teclado a cualquier lugar o dispositivo. Dispone de una

CONOCE EL PC. Familiarizate y aprende a manejar el PC
CONOCE EL PC Familiarizate y aprende a manejar el PC. El curso Conoce el PC, creado por KZgunea, se encuentra bajo licencia Creative Commons de Atrib

Story Transcript

Pr´actica 3: El teclado del PC Gustavo Romero L´ opez Arquitectura y Tecnolog´ıa de Computadores

7 de junio de 2016

Gustavo Romero L´ opez

Pr´ actica 3: El teclado del PC

1 / 11

Objetivos Objetivos: Recordar el funcionamiento de las interrupciones. Describir el funcionamiento del teclado. Crear una controlador de teclado mediante manejo de interrupciones en varias fases: 1 2 3

M´ınimo: que imprima cualquier cosa al pulsar una tecla. Otro que imprima los c´ odigos de las teclas pulsadas. Uno u ´ltimo capaz de escribir c´ odigos ASCII.

Fuentes: Hardware: http://www.seasip.info/VintagePC/ibm_1391406.html Software: http://wiki.osdev.org/Babystep5 Recursos x86: Arquitectura Lenguaje ensamblador Gustavo Romero L´ opez

Pr´ actica 3: El teclado del PC

2 / 11

El teclado del PC

Gustavo Romero L´ opez

Pr´ actica 3: El teclado del PC

3 / 11

Puertos utilizados por el teclado

Gustavo Romero L´ opez

Pr´ actica 3: El teclado del PC

4 / 11

Funcionamiento del teclado El teclado de los PCs no est´a hecho para generar directamente ASCII sino un c´odigo de b´ usqueda, en realidad dos: uno que se emite al pulsar una tecla y otro al soltarla. Si el c´ odigo de la pulsaci´on de una tecla es n, al soltarla se emite el c´odigo n+128 o´ n+0x80. El controlador del teclado debe traducir el c´ odigo de cada pulsaci´on a su correspondiente valor en ASCII. Las teclas de control deben ser tenidas en cuenta porque modifican el car´acter final obtenido. Ejemplo de como obtener la letra ’A’ may´ uscula: 1

Pulse la tecla May´us , con lo que se emite el c´odigo 0x2a.

2

Pulse la tecla A con lo que se emite el c´ odigo 0x1e.

3

Suelte la tecla A y se emite 0x9e = 0x1e + 0x80.

4

Suelte la tecla May´us y se emite el c´ odigo 0xae = 0x2a + 0x80.

5

El controlador calcula el c´ odigo ASCII de la ’A’, 0x41. Gustavo Romero L´ opez

Pr´ actica 3: El teclado del PC

5 / 11

Cambio de manejador de interrupci´on y fin de interrupci´on Para cambiar el manejador de interrupci´ on hemos de cambiar la direcci´on de salto almacenada en el vector de interrupci´on. Recuerde que la tabla se almacena al principio de la memoria. Primero el desplazamiento y luego el segmento del manejador. La interrupci´on de teclado es la 0x09. 16 17 18 19 20 21

cli mov $0x09 , %bx shl $2 , %bx movw $controlador , ( %bx ) movw %ds , 2( % bx ) sti

# # # # # #

deshabilitar interrupciones interrupci o ´ n hardware del teclado bx = bx * 4 , direcci ´ o n del vector int . cambiar el desplazamiento la int . teclado cambiar el segmento de la int . teclado habilitar interrupciones

Cada vez que ejecuta el manejador de una interrupci´on hemos de emitir la orden de fin de interrupci´ on (EOI) para que el controlador de interrupciones 8259 sepa que ya ha sido atendida. Para ello es necesario escribir el valor 0x20 en el puerto 0x20. 35 36

mov $0x20 , %al out %al , $0x20

# c´ o digo EOI # enviar EOI

Gustavo Romero L´ opez

Pr´ actica 3: El teclado del PC

6 / 11

Makefile 1

SHELL = / bin / bash

2 3 4 5 6

ASM OBJ BIN ATT

= = = =

$ ( wildcard *. s ) $ ( ASM :. s =. o ) $ ( OBJ :. o =. bin ) $ ( BIN :. bin =. att )

7 8

all :

$ ( ATT ) qemu

9 10 11

clean : kill $ ( RM ) - rfv $ ( ATT ) $ ( BIN ) $ ( OBJ ) core .* *~

12 13 14

kill : killall -q qemu - system - i386 || echo " nothing to kill "

15 16 17

qemu : kill $ ( BIN ) qemu - system - i386 - fda $ ( BIN ) -s & > / dev / null &

18 19 20

%.bin : %.o $ ( LD ) -- oformat binary - Ttext 0 x7c00 $ < -o $@

21 22 23 24

%.att : %.bin objdump -D -b binary - mi386 - Maddr16 , data16 $ < > $@ Gustavo Romero L´ opez

Pr´ actica 3: El teclado del PC

7 / 11

El m´as sencillo: basico.s I 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

. code16 . text . globl _start

# co ´ digo de 16 bits # secci ´ o n de c ´ o digo # punto de entrada

_start : xor %ax , %ax mov %ax , %ds mov %ax , %ss mov $0x9c00 , %sp mov $0xb800 , %ax mov %ax , %es xor %di , %di

# # # #

ax ds ss sp

= = = =

# 0 xb800 --> ax | # ax --> es | video --> es : di = 0 xb8000 # 0 --> di |

cli mov $0x09 , %bx shl $2 , %bx movw $controlador , ( %bx ) movw %ds , 2( % bx ) sti stop : hlt jmp stop

0 0 0 | pila en 0 x09c00 = 0 x7c00 + 0 x2000 | ss : sp

# # # # # #

deshabilitar interrupciones interrupci o ´ n hardware del teclado bx = bx * 4 , direcci ´ o n del vector int . cambiar el desplazamiento la int . teclado cambiar el segmento de la int . teclado habilitar interrupciones

# ¿ hace falta ? # bucle vac ´ ıo

# ############################################################################## controlador :

Gustavo Romero L´ opez

Pr´ actica 3: El teclado del PC

8 / 11

El m´as sencillo: basico.s II

30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45

in $0x60 , %al

# leer c o ´ digo de tecla pulsada

mov $0x0f , %ah stosw

# color : blanco sobre negro # imprimir caracter : %ax --> %es :( % di ++)

mov $0x20 , %al out %al , $0x20

# c´ o digo EOI # enviar EOI

iret

# volver de la interrupci o ´n

# ############################################################################## . org 510 . word 0 xAA55

# posici ´ o n de memoria 510 # marca del sector de arranque

# ##############################################################################

Gustavo Romero L´ opez

Pr´ actica 3: El teclado del PC

9 / 11

2a versi´on: impresi´on de c´odigos num´ericos

1

2

Cree un nuevo directorio con una copia de basico.s y Makefile. Modifique basico.s de forma que se imprima el c´ odigo num´ erico que se obtiene al pulsar cada tecla. Recuerde que al liberarla tambi´en se emite otro c´odigo diferente.

Gustavo Romero L´ opez

Pr´ actica 3: El teclado del PC

10 / 11

3a versi´on: impresi´on de caracteres ASCII

1

2

Cree un nuevo directorio con una copia de basico.s y Makefile. Modifique basico.s de forma que obtenga el c´odigo de cada pulsaci´on, lo traduzca al car´ acter ASCII equivalente e imprima dicho car´acter.

Gustavo Romero L´ opez

Pr´ actica 3: El teclado del PC

11 / 11

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.