Práctica 3: El teclado del PC

Documentos relacionados
Práctica 3: El teclado del PC

Arquitectura de Sistemas

Arquitectura de Sistemas

Práctica 2: Sector de arranque

Práctica 2: Sector de arranque

Sector de arranque. Introducción a la programación para ingeniería de computadores. Gustavo Romero López. Arquitectura y Tecnología de Computadores

Práctica 2: Sector de arranque

Interrupciones y entrada/salida

Tema 5.1: Presentación de datos en pantalla

Estructura de Computadores: Tema 1. Introducción. Índice. Arquitectura del i8086

Tema 5. Presentación de datos por pantalla

Pregunta correcta=0,4 Pregunta no contestada=0 Pregunta incorrecta (tipo test)=-0,2

Tema 2: Segmentación y modos de direccionamiento

Práctica 1: Entorno de desarrollo GNU

Examen de Laboratorio de Estructura de Computadores Septiembre 2005 I.T. Informática de Sistemas / Gestión Departamento de Automática ATC -

SISTEMAS BASADOS EN MICROPROCESADORES

Interrupciones en el simulador MSX88. Facundo Quiroga

INT 21H Función 02H Salida de Carácter LLAMADA: AH = 02H DL = Código ASCII a enviar al dispositivo de salida. DEVUELVE: NADA.

Introducción al EMU8086

(4) Unidad 4. Recursos de Programación SISTEMAS BASADOS EN MICROPROCESADORES. Grado en Ingeniería Informática EPS - UAM

Laboratorio de Sistemas Operativos

Pregunta correcta=0,4 Pregunta no contestada=0 Pregunta incorrecta (tipo test)=-0,15

Tema 5.2: Segmentación y modos de direccionamiento

Arquitectura de Computadores II 8086 Parte II

SISTEMAS BASADOS EN MICROPROCESADORES

Introducción al simulador

ESTRUCTURA DE COMPUTADORES I (Capítulo 16:El Teclado) 1/5 16-EL TECLADO

Interrupciones de Reloj y Teclado.

Tema 1. Fundamentos del lenguaje ensamblador

Tema: Lenguaje ensamblador embebido

Programación de IA-32 Modo Real

Inicio. memoria CPU BIOS. dispositivos. memoria auxiliar

PROBLEMAS DE ESTRUCTURA DE LOS COMPUTADORES LENGUAJE MÁQUINA Y ENSAMBLADOR

Tema 4: Las interrupciones y la ROM-BIOS

Gestión de Memoria e Interrupciones en modo protegido

Examen de teoría (5 puntos)

Modo Real vs Modo Protegido. Pasaje a modo protegido

Gestión de los periféricos del i8086. Arquitectura Computadores I

Arquitectura de Sistemas

SISTEMAS BASADOS EN MICROPROCESADOR 2º Grado Ingeniería Informática (EPS UAM) EXAMEN FINAL EXTRAORDINARIO JULIO 2013 ENUNCIADO DEL PROBLEMA

Tema 4. La pila, los procedimientos y las macros

Tema 5: La pila, las macros y los procedimientos

Objetivo. Introducción. Tema: GENERACION DE CODIGO. Compiladores, Guía 11 1

Tema 2. Presentación de datos por pantalla. La ROM-BIOS

DEBUG Y USO DE CADENAS.

Tema 4. Fundamentos del ensamblador

Segmentacion e Interrupciones en IA-32

INTRODUCCIÓN AL EMU8086.

Examen de Laboratorio de Estructura de Computadores I.T. Informática de Gestión / Sistemas. 16 de junio de 2010 Departamento de Automática ATC

Arquitectura de Computadores

Llamadas al sistema Índice

5 - Lenguaje Ensamblador

Relación de Problemas I

CONJUNTO DE INSTRUCCIONES Microprocesador 8086

Tema 6. Segmentación y modos de direccionamiento

ESTRUCTURA Y ORGANIZACIÓN DE COMPUTADORES

Tema 9 Periféricos de Entrada

Estructura de los sistemas de cómputo

Departamento de Sistemas e Informática

Interrupciones en el Simulador MSX88

Gestión de Memoria e Interrupciones en modo protegido

Tema 4. Lenguaje máquina y lenguaje ensamblador

a) if (i==5){ j=2*k; k=k+1; } else { j=k; k=1; } c) for (i=0, i<5, i++){ j=k+m; m=2*m; } b) if (i<0){ i=i-5; } if (i==0){ i=4; }

ETC II, Práctica 2. 1 OBJETIVOS:

Las fases de la sincronización por interrupción

Examen de teoría (4 puntos)

Funcionamiento del 8086/8088

Examen de teoría (5 puntos)

MOV EBX, 0 ; Finalizar cad. destino

Tema 4: Lenguaje máquina - Lenguaje ensamblador

Instrucciones Lógicas y Registro de Banderas

Intel Arquitectura. Programación en Ensamblador Ing. Marcelo Tosini

CON LOS VALORES ASCII

Sobre cómo dividir un programa ensamblador x86 (modo Real) en módulos compilables por separado.

ARQUITECTURA DE SISTEMAS PARALELOS (3º ING. TÉC. INFORMATICA DE SISTEMAS) PRACTICA (CURSO 2004/05) ENTRADA/SALIDA.

Introducción Ejercicio Interrupciones Ejercicio DMA Cierre. Entrada/Salida. Organización del Computador I. Facundo Pessacg

PRONTUARIO I. INFORMACIÓN GENERAL

Arquitectura IA-32 Modo Real. Autor:Alejandro Furfaro

Examen de teoría (5 puntos)

Tema 4. Lenguaje máquina y lenguaje ensamblador

Arquitectura del CPU. Organización del Computador 1 Verano 2016

Interrupciones por hardware Interrupciones por so?ware

Instrucciones de Control de Flujo y Usos de la Pila

Arquitectura de computadoras

Práctica 6. El procesador

Acceso Directo a Memoria

Examen de teoría (5 puntos)

Circuitos Digitales II y Laboratorio Electrónica Digital II y Laboratorio

(5) Unidad 5. Entrada / Salida SISTEMAS BASADOS EN MICROPROCESADORES. Grado en Ingeniería Informática EPS - UAM

Universidad Nacional de Ingeniería Arquitectura de Maquinas I. Unidad II: Arquitectura y Programacion de un Microprocesador (80X86)

Tema 4. Lenguaje máquina y lenguaje ensamblador

Lectura y escritura de un caracter

Formato para prácticas de laboratorio

Guía rapida. de capacitación para el portal web de la red social

UNIDAD I CONCEPTOS GENERALES. Conceptos Generales Microprocesadores Otoño 2011

Introducción Ejercicios PIC: Intel 8259 Más ejercicios Preguntas. Entrada/Salida. Polling e Interrupciones. Juan Pablo Galeotti

Arquitectura IA-32 Pila. Autor:Alejandro Furfaro

SISTEMAS OPERATIVOS Arquitectura de computadores

Examen de teoría (5 puntos)

Transcripción:

Práctica 3: El teclado del PC Gustavo Romero López Arquitectura y Tecnología de Computadores 7 de junio de 2016 Gustavo Romero López Práctica 3: El teclado del PC 1 / 11

Objetivos Objetivos: Fuentes: Recordar el funcionamiento de las interrupciones. Describir el funcionamiento del teclado. Crear una controlador de teclado mediante manejo de interrupciones en varias fases: 1 Mínimo: que imprima cualquier cosa al pulsar una tecla. 2 Otro que imprima los códigos de las teclas pulsadas. 3 Uno último capaz de escribir códigos ASCII. Hardware: http://www.seasip.info/vintagepc/ibm_1391406.html Software: http://wiki.osdev.org/babystep5 Recursos x86: Arquitectura Lenguaje ensamblador Gustavo Romero López Práctica 3: El teclado del PC 2 / 11

El teclado del PC Gustavo Romero López Práctica 3: El teclado del PC 3 / 11

Puertos utilizados por el teclado Gustavo Romero López Práctica 3: El teclado del PC 4 / 11

Funcionamiento del teclado El teclado de los PCs no está hecho para generar directamente ASCII sino un código de búsqueda, en realidad dos: uno que se emite al pulsar una tecla y otro al soltarla. Si el código de la pulsación de una tecla es n, al soltarla se emite el código n+128 ó n+0x80. El controlador del teclado debe traducir el código de cada pulsación a su correspondiente valor en ASCII. Las teclas de control deben ser tenidas en cuenta porque modifican el carácter final obtenido. Ejemplo de como obtener la letra A mayúscula: 1 Pulse la tecla Mayús, con lo que se emite el código 0x2a. 2 Pulse la tecla A con lo que se emite el código 0x1e. 3 Suelte la tecla A y se emite 0x9e = 0x1e + 0x80. 4 Suelte la tecla Mayús y se emite el código 0xae = 0x2a + 0x80. 5 El controlador calcula el código ASCII de la A, 0x41. Gustavo Romero López Práctica 3: El teclado del PC 5 / 11

Cambio de manejador de interrupción y fin de interrupción Para cambiar el manejador de interrupción hemos de cambiar la dirección de salto almacenada en el vector de interrupción. Recuerde que la tabla se almacena al principio de la memoria. Primero el desplazamiento y luego el segmento del manejador. La interrupción de teclado es la 0x09. 16 cli # deshabilitar interrupciones 17 mov $0x09, %bx # interrupción hardware del teclado 18 shl $2, %bx # bx = bx * 4, direcci ón del vector int. 19 movw $controlador, ( %bx) # cambiar el desplazamiento la int. teclado 20 movw %ds, 2( %bx) # cambiar el segmento de la int. teclado 21 sti # habilitar interrupciones Cada vez que ejecuta el manejador de una interrupción hemos de emitir la orden de fin de interrupción (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 mov $0x20, %al # código EOI 36 out %al, $0x20 # enviar EOI Gustavo Romero López Práctica 3: El teclado del PC 6 / 11

Makefile 1 SHELL = / bin / bash 2 3 ASM = $( wildcard *. s) 4 OBJ = $( ASM :.s=.o) 5 BIN = $( OBJ :.o=. bin ) 6 ATT = $( BIN :. bin =. att ) 7 8 all : $( ATT ) qemu 9 10 clean : kill 11 $(RM) -rfv $( ATT ) $( BIN ) $( OBJ ) core.* *~ 12 13 kill : 14 killall -q qemu - system - i386 echo " nothing to kill " 15 16 qemu : kill $( BIN ) 17 qemu - system - i386 -fda $( BIN ) -s &> / dev / null & 18 19 %.bin : %.o 20 $( LD) -- oformat binary - Ttext 0 x7c00 $< -o $@ 21 22 %.att : %.bin 23 objdump -D -b binary - mi386 - Maddr16, data16 $< > $@ 24 Gustavo Romero López Práctica 3: El teclado del PC 7 / 11

El más sencillo: basico.s I 1. code16 # có digo de 16 bits 2 3. text # secci ón de có digo 4. globl _start # punto de entrada 5 6 _start : 7 xor %ax, %ax # ax = 0 8 mov %ax, %ds # ds = 0 9 mov %ax, %ss # ss = 0 pila en 10 mov $0x9c00, %sp # sp = 0x09c00 = 0x7c00 + 0x2000 ss:sp 11 12 mov $0xb800, %ax # 0xb800 --> ax 13 mov %ax, %es # ax --> es video --> es:di = 0 xb8000 14 xor %di, %di # 0 --> di 15 16 cli # deshabilitar interrupciones 17 mov $0x09, %bx # interrupción hardware del teclado 18 shl $2, %bx # bx = bx * 4, direcci ón del vector int. 19 movw $controlador, ( %bx) # cambiar el desplazamiento la int. teclado 20 movw %ds, 2( %bx) # cambiar el segmento de la int. teclado 21 sti # habilitar interrupciones 22 23 stop : 24 hlt # hace falta? 25 jmp stop # bucle vac ío 26 27 # ############################################################################## 28 29 controlador : Gustavo Romero López Práctica 3: El teclado del PC 8 / 11

El más sencillo: basico.s II 30 in $0x60, %al # leer código de tecla pulsada 31 32 mov $0x0f, %ah # color : blanco sobre negro 33 stosw # imprimir caracter : %ax --> %es:( %di ++) 34 35 mov $0x20, %al # código EOI 36 out %al, $0x20 # enviar EOI 37 38 iret # volver de la interrupci ón 39 40 # ############################################################################## 41 42. org 510 # posici ón de memoria 510 43. word 0 xaa55 # marca del sector de arranque 44 45 # ############################################################################## Gustavo Romero López Práctica 3: El teclado del PC 9 / 11

2 a versión: impresión de códigos numéricos 1 Cree un nuevo directorio con una copia de basico.s y Makefile. 2 Modifique basico.s de forma que se imprima el código numérico que se obtiene al pulsar cada tecla. Recuerde que al liberarla también se emite otro código diferente. Gustavo Romero López Práctica 3: El teclado del PC 10 / 11

3 a versión: impresión de caracteres ASCII 1 Cree un nuevo directorio con una copia de basico.s y Makefile. 2 Modifique basico.s de forma que obtenga el código de cada pulsación, lo traduzca al carácter ASCII equivalente e imprima dicho carácter. Gustavo Romero López Práctica 3: El teclado del PC 11 / 11