Sunteți pe pagina 1din 222

Periféricos e interfaces

1
Horarios
• Teoría:
– Secretaría asignará a cada alumno uno de los grupos
de teoría siguientes:
Grupo SM-31 (Aula 3101) Lunes y Jueves de 9h a 10h
Grupo SM-32 (Aula 3102) Lunes y Jueves de 9h a 10h

Grupo ST-31 (Aula 3105) Martes y Viernes de 17h a 18h


La asistencia a clase de teoría es voluntaria

• Laboratorio:
– Cada alumno escogerá libremente uno de los grupos de
laboratorio siguientes:

La asistencia al laboratorio es voluntaria

2
Horarios
L M X J V
Teoría Teoría
9-10
SM-31 y 32 SM-31 y 32
10-11

12-14

Teoría Teoría
17-18
ST-31 ST-31

19-21

3
Calificaciones
• El alumno , para aprobar la asignatura deberá aprobar la teoría
y el laboratorio
– El exámen de teoría constará de unas 7-8 cuestiones teórico prácticas
sobre los temas vistos tanto en las aulas de teoría como la parte teórica
impartida en el laboratorio.
– Las primeras sesiones de laboratorio (4 o 5) serán exclusivamente
teóricas, durarán entre una hora y una hora y cuarto y se verá la parte
mas elemental del ensamblador de los microprocesadores de la familia
Intel (80x86).
– Las últimas sesiones de laboratorio (5 o 6) consistirán en la realización
de practicas en ensamblador con distintos periféricos.
– El alumno deberá presentar un trabajo, cuyo enunciado se le dará en el
mes de Enero, consistente en una memoria y un disquete con el
programa ejecutable. Se le podrá exigir la defensa oral del mismo. El
trabajo podrá ser realizado por parejas. La calificación de dicho trabajo
será la nota de Laboratorio.

4
Exámenes
• Febrero:
– Jueves 17 de Febrero a las 9h en el Bloque X

• Junio:
Miercoles 15 de Junio a las 9h en las aulas del bloque III

• Septiembre
Jueves 8 de Septiembre a las 12h en las aulas del
bloque III

5
WEB del departamento de ATC
http://atc.eui.upm.es
Horarios
Normas
Notas
Programas
Tutorías
Apuntes
Direcciones IP profesores
6
Apuntes de la asignatura
http://atc.eui.upm.es
Diapositivas de Ensamblador (PowerPoint)

Diapositivas de teoría (PowerPoint)

Ejecutables Ensamblador (TASM.EXE,


TD.EXE, TLINK.EXE)

Diapositivas de Laboratorio (Power Point)

7
Profesores
D. Ildefonso González Gayo
Despacho 3014 (En el laboratorio de Tecnología de equipos
informáticos)
Docencia de los grupos SM-31 y SM-32
Tutorías: Martes 9-12
Jueves 11-14

D. Juan Estupiñán Díaz (Coordinador de la asignatura)


Despacho 4110
Docencia del grupo ST-31 y todos los laboratorios
Tutorías: Lunes 12-14
Martes 16-17
Miercoles 12-14
Viernes 16-17

8
Programa de la asignatura
•• Conceptode
Concepto deperifericos
perifericosyyde
deinterfaces
interfaces
•• Diagramasde
Diagramas debloques
bloques
•• ElµP
El µP8086/8087
8086/8087
•• Organizaciónde
Organización delalamemoria
memoriaenenelel8086
8086
•• Interrupciones.PIC
Interrupciones. PIC
•• Temporizadores
Temporizadores
•• Teclado
Teclado
•• DMA
DMA
•• Relojen
Reloj entiempo
tiemporeal
realyyCMOS
CMOSRAM RAM
•• 80286.Modo
80286. ModoProtegido
Protegido
•• 80386,80486
80386, 80486V86,
V86,Pipeline
Pipeline
•• Pentium.Arquitectura
Pentium. Arquitecturasuperescalar
superescalar
•• Video.
Video.
•• Discos,CD,
Discos, CD,Puerto
Puertoserie
serieyyparalelo
paralelo

9
Bibliografía recomendada
•• Los
Losmicroprocesadores
microprocesadoresxx86 xx86yylalaarquitectura
arquitecturadel
delPC.
PC.
AntonioGarcia
Antonio GarciaGuerra
Guerra
PublicacionesETSITM
Publicaciones ETSITM
•• PCPCINTERNO
INTERNO
M.Tischer
M.Tischer
Marcombo
Marcombo
•• Arquitectura
Arquitecturadel
delPC
PC
ManuelUjaldón
Manuel UjaldónMartínez
Martínez
Ed.Ciencia
Ed. Ciencia33
•• IBM
IBMMicrocomputers.
Microcomputers.AAProgrammer’s
Programmer’sHandbook
Handbook
JulioSanchez.
Julio Sanchez.Maria
MariaP. P.Canton
Canton
McGraw-Hill
Mc Graw-Hill
•• ElEluniverso
universodigital
digitaldel
delIBM
IBMPC,
PC,AT
ATyyPS/2
PS/2
CiriacoGarcia
Ciriaco GarciadedeCelis
Celis
Grupouniversitario
Grupo universitariodedeInformatica
Informatica
http://atc.ugr.es/docencia/udigital
http://atc.ugr.es/docencia/udigital
10
1.- GENERALIDADES
•• Esquema
Esquema de
de bloques
bloques de
de un
un
ordenador según
ordenador según Von
Von Neuman
Neuman
1.1 Microprocesador
1.1 Microprocesador (CPU)
(CPU)

1.2 Memoria
1.2 Memoria Principal
Principal

1.3 Periféricos
1.3 Periféricos

1.4 Buses
1.4 Buses

11
1 Ordenador según Von Neuman
BUS DE CONTROL

µP Memoria Periférico 1 Periférico 2

BUS DE DIRECCIONES

BUS DE DATOS
12
1.1 El microprocesador (CPU)
•Tradicionalmente se le denomina CPU (Unidad
Central de Procesos)
Un µP es una CPU integrada en un solo chip
Consta de la ALU (Unidad Aritmético lógica y de la
UC (Unidad de Control)

CPU

µP = ALU UC

13
1.2 El microprocesador (ALU)

•ALU (Unidad Aritmético Lógica) es el circuito


encargado de efectuar las operaciones aritméticas y
lógicas

DATO 1 DATO 2

ENTRADAS DE
CONTROL.
ALU = (SELECCIONAN
LA OPERACIÓN
A REALIZAR)

RESULTADO = DATO 1 (OPERACIÓN) DATO 2

14
1.3 El microprocesador (UC)

•UC (Unidad de Control) es un autómata.


Su entrada lo constituye el código de la instrucción que se esté
ejecutando y el registro de flags.
Sus salida son el bus de control y el bus de direcciones

BUS DE CONTROL
Reloj

Registro de instrucción
UC

Registro de Flags BUS DE DIRECCIONES

15
1.4 LA MEMORIA CENTRAL
•En el modelo Von Neuman, contiene Datos e instrucciones

BUS DE CONTROL

Mem Rd Wr

Memoria
BUS DE DIRECCIONES
7F040H
µP 7F041H
7F040CH 7f042H
7F043H
7F044H
7F045H
7F046H

BUS DE DATOS
16
1.5 PERIFERICOS

BUS DE CONTROL

INTERFAZ Periférico

BUS DE DIRECCIONES

BUS DE DATOS
17
1.6 COMPARACION PERIFERICO-MEMORIA

BUS DE CONTROL

Mem Rd Wr
IO
Memoria
Interfaz

µP Periférico

BUS DE DIRECCIONES

BUS DE DATOS
18
1.7 Ejecución de una instrucción de lectura en memoria
MOV AL,[0043H]
BUS DE CONTROL
Mem Rd Wr
1 1 0
IO

Memoria 1 0 0
40H Interfaz
µP 00043H 41H 42H
42H 43H 43H Periférico
AL 43H 44H
44H
45H
46H

BUS DE DIRECCIONES

BUS DE DATOS

19
1.8 Ejecución de una instrucción de Input (Lectura en periférico)
IN AL,43H

BUS DE CONTROL
Mem Rd Wr
0 1 0
IO

Memoria 1 0 1
40H Interfaz
µP 00043H 41H 42H
42H 43H 43H Periférico
AL 43H 44H
44H
45H
46H

BUS DE DIRECCIONES

BUS DE DATOS

20
2 DIAGRAMA DE BLOQUES DEL PC
CPU (µP) CONTROLADOR
RELOJ DE DISCO DURO
COPROCESADOR
EN
TIEMPO REAL
Y CONTROLADOR
CONTROLADOR
CMOS RAM DE DISQUETERA
DE
INTERRUPCIONES
PUERTOS
TEMPORIZADORES SERIE
T0
T1 PUERTOS
T2 PARALELO

CONTROLADOR INTERFAZ DE CONTROLADOR


DE DMA TECLADO TECLADO DE VIDEO

MEMORIA EXPANDIDA MEMORIA EXTENDIDA


CONTROL DE MEMORIA CONTROLADOR DE MEMORIA RAM BASICA
EXPANDIDA DINAMIC RAM Y REFRESCO ROM BIOS 21
2.1 CONTROLADOR DE INTERRUPCIONES

Actúa de intermediario entre los periféricos y


el µP gestionando las solicitudes de
interrupción

INT CONTROLADOR Periférico 1


CPU (µP) DE
INTERRUPCIONES
Periférico 2

Periférico 2

22
2.2 TEMPORIZADORES

Son divisores de frecuencia programables.


Se programa el divisor de frecuencia y la
Forma de onda de la salida.

T0 Tics (1/18 sg)


T1 Refresco de memoria
T2 Altavoz (Usuario)

23
2.3 TECLADO

Envía a la CPU el código asociado a cada


tecla (Un código al pulsar y otro al soltar).
El código se envía en serie de forma síncrona

CONTROLADOR
TECLADO DE
TECLADO CPU

24
2.4 RELOJ EN TIEMPO REAL Y CMOS RAM

Memoria RAM de tecnología CMOS.


Mantenida con una pila recargable.
Contiene la hora, el dia, el mes, el año etc y
El SETUP
Hora
Minuto
Segundo
Dia
Mes
Año

SET UP

25
2.5 DMA (ACCESO DIRECTO A MEMORIA)
Permite que un periférico tenga acceso directo
a memoria
BUS DE CONTROL
Controlador
BUS DE DIRECCIONES de DMA

µP MEMORIA
Periférico

26
BUS DE DATOS
3 EL MICROPROCESADOR µP 8086/8088
UNIDAD DE
UNIDAD DE
INTERFAZ
EJECUCION BUS DE DIRECCIONES
CON EL BUS
AH AL AX (EU) (20 BITS)
BH BL BX (BIU)
CH CL CX
DH DL DX SUMADOR
SP
BP
SI BUS DE DATOS (16 BITS)
DI

BUS DE DATOS DE LA ALU (16 BITS)


CS CONTROL
DS DEL BUS
REGISTROS TEMPORALES SS
ES
IP
REGISTROS INTERNOS
ALU INACCESIBLES
CONTROL POR EL USUARIO
DE LA EU
INDICADORES (FLAGS) 1 2 3 4 5 6
27
COLA DE INSTRUCCIONES
3.1 Segmentacion
• Dirección efectiva = Segmentox16 + Offset
FFFFF

Segmento = 7F3C Offset = 4BE3

83FA3
64Kb
4BE3
7F3C0

Dirección accedida = 7F3C0 + 4BE3 = 83FA3

00000
28
3.2 Registros del 8086

Registros Generales:
AH AL AX ACUMULADOR
BH BL BX BASE
CH CL CX CONTADOR
DH DL DX DATOS

ADD AH,5FH; AH+5FHÆAH


MOV AH,[BX+6]
REP (Repite CX veces)
MOV AL,DH
29
3.3 Registros del 8086

Registros de Segmento:
CS SEGMENTO DE CODIGO
SS SEGMENTO DE PILA
DS SEGMENTO DE DATOS
ES SEGMENTO EXTRA

CS:IP Æ INSTRUCCIÓN
PILA Æ SS: SP
MOV AH,[1000H] ; DS:1000H Æ AH

30
3.4 Registros del 8086

Otros registros:
SP PUNTERO DE PILA
BP REGISTRO DE BASE
SI INDICE FUENTE
DI INDICE DESTINO

IP PUNTERO DE INSTRUCCION

CS:IP Æ INSTRUCCIÓN
PILA Æ SS: SP
MOVSB DS:SI Æ ES:DI
31
3.5 Registros del 8086
Registro de flags:
OF DF IF TF SF ZF AF PF CF
Acarreo
Paridad
Acarreo auxiliar
Zero
Signo
Trap (Paso a paso)
Máscara de interrupciones
Flag de dirección
Flag de overflow

32
3.6 Registros del 8086
Registro de flags; Flag de acarreo
OF DF IF TF SF ZF AF PF CF
Acarreo

Acarreo en sumas
Borrow (Acarreo negativo) en restas y comparaciones
Después de una suma si CF = 1 significa desbordamiento
solo en caso de enteros sin signo
Después de una resta si FC = 1 significa A<B solo si se
trata de enteros sin signo.
En Shifts y rotaciones el bit que “sale” del registro en
cuestión se conserva en este flag
33
3.7 Registros del 8086
Registro de flags; Flag de paridad
OF DF IF TF SF ZF AF PF CF
Paridad

•Se activa (Se pone a “1”) si el resultado de una


operación de suma, resta o de una operación lógica tiene
paridad par (Número par de unos)

34
3.8 Registros del 8086
Registro de flags; Flag de acarreo auxiliar
OF DF IF TF SF ZF AF PF CF
Acarreo auxiliar

•Indica el acarreo del 4º al 5º bit en una operación de


suma o resta.
Es útil si los operandos son cifras BCD

35
3.9 Registros del 8086
Registro de flags; Flag de cero
OF DF IF TF SF ZF AF PF CF
Flag de cero

•Se activa (Se pone a “1”) si el resultado de la última


operación aritmética o lógica ha sido cero

36
3.10 Registros del 8086
Registro de flags; Flag de signo
OF DF IF TF SF ZF AF PF CF
Flag de signo

•Es una copia del bit mas significativo del resultado de


la última operación aritmética o lógica efectuada

37
3.11 Registros del 8086
Registro de flags; Flag Trap (Trampa)
OF DF IF TF SF ZF AF PF CF
Flag de trap

•Si el flag T está activado (=1) el programa efectúa una


única instrucción.
Se utiliza en ejecución paso a paso y a partir del 80386
en los puntos de ruptura introducidos por el depurador.

38
3.12 Registros del 8086
Registro de flags; Máscara de interrupciones

OF DF IF TF SF ZF AF PF CF
Máscara de
interrupciones

•IF = 1 (Su estado habitual) Interrupciones habilitadas


IF = 0 Interrupciones deshabilitadas
Es el único flag que está a “1” por defecto

39
3.13 Registros del 8086
Registro de flags; Flag de dirección

OF DF IF TF SF ZF AF PF CF
Flag de dirección

En las instrucciones de Ensamblador de manejo de cadenas :
MOVSB/MOVSW
CMPSB/CMPSW
LODSB/LODSW
STOSB/STOSW
Se efectúa en unos casos una lectura en memoria en la
posición indicada por el par de registros DS:SI y en otros una
escritura en la posición ES:DI.
Finalizada la lectura o la escritura se incrementa o se
decrementa el/los punteros SI o/y DI que hayan intervenido en la
instreucción según que el flag de dirección esté a “0” o a “1”
40
3.14 Registros del 8086
Registro de flags; Flag de dirección
OF DF IF TF SF ZF AF PF CF
Flag de dirección
•Incrementa (Si DF = 0) o decrementa (Si DF = 1) los índices DI
y/o SI después de ejecutar alguna de las instrucciones de
manipulación de cadenas.
.Ejemplo:
DF = 1
Se ejecuta CMPSB (Comparar string de bytes)

El µP calcula DS:SI – ES:DI Æ Flags


Luego SI – 1 Æ SI
DI – 1 Æ DI

Si el DF Hubiera estado a “0” Los registros SI y DI se


hubieran incrementado 41
3.15 Registros del 8086
Registro de flags; Flag de Overflow

OF DF IF TF SF ZF AF PF CF
Flag de Overflow

•Se activa (Se pone a “1”) si en una operación de suma o resta


de enteros con signo se produce desbordamiento.
Una forma práctica y sencilla de obtener el valor de este
flag es observar los signos de los operandos y del resultado. Si
los operandos tienen el mismo signo y el resultado signo
diferente es que se ha producido desbordamiento.

42
3.16 Registros del 8086
Registro de flags; Flag de Overflow
OF DF IF TF SF ZF AF PF CF
Flag de Overflow

•Ejemplo:
AH = 7C = 01111100 BL = A4 = 10100100
Obtener SUB AH,BL ( AH – BL Æ AH )

El µP sumará AH con el Cmp a 2 de BL:


01111100
01011100
11011000
El flag de Overflow se pondrá a “1” indicando que en el
supuesto caso de que los operandos sean enteros con signo, se
ha producido desbordamiento.
Si los operandos son enteros sin signo este flag no 43
indica nada
3.17 Registros del 8086
Registro de flags; Ejemplo 1
OF DF IF TF SF ZF AF PF CF

•AH = D2H = 11010010 BH = B4H = 10110100


Obtener ADD AH,BH ( AH + BH Æ AH )
El µP sumará AH con BH:

11010010
10110100
110000110

Fc = 1 Fo = 0 Fs = 1 Fp = 0 Fz = 0

44
3.18 Registros del 8086
Registro de flags; Ejemplo 2
OF DF IF TF SF ZF AF PF CF

•AL = C4H = 11000100 AH = 5BH = 01011011


Obtener SUB AL,AH ( AL - AH Æ AL )
El µP sumará AL con el Ca2 de AH:

11000100
10100101
101101001
¡OJO!

Fc = 0 Fo = 1 Fs = 0 Fp = 1 Fz = 0

45
Uso de los flags en comparaciones
Se efectúa la resta de dos números A – B. después los
flags me indicarán si A>B, A<B o A=B según el siguiente
criterio:

A y B Enteros sin signo:


Fz = 1 Æ A = B
Fz = 0 Æ Fc = 0 Æ A>B
Fc = 1 Æ A<B
A y B Enteros con signo:
Fz = 1 Æ A = B
Fz = 0 Æ Fo = Fs Æ A>B
Fo ≠ Fs Æ A<B

46
Comparaciones sin flags
Se efectúa la resta de dos números A – B. después los flags me indicarán si
A>B, A<B o A=B según se vió en la diapositiva anterior. Hoy dia no es
necesario el tratar directamente con los flags, el conjunto de instrucciones
del µP incluye saltos condicionados al estado de los flags necesarios:

JA dirección (Salta a la dirección especificada si A>B si A y B son enteros sin


signo)
O lo que es lo mismo salta a la dirección especificada si Fz = 0 y
Fc = 0

JG dirección (Salta a la dirección especificada si A>B si A y B son enteros con


signo)
Salta a la dirección indicada si Fz = 0 Y Fo = Fs

47
Multiplexado de buses en el 8086/8088
A19…A16

Latch A19…A0

Bus de Direcciones
µP

AD15…AD0 Latch D15…D0

Bus de Datos

48
Organización de la memoria en el 8086
• Espacio de direcciones lógicas:
FFFFFH
FFFFEH
FFFFDH

1Mb

. .
. .

00002H
00001H
00000H

49
Organización de la memoria en el 8086
A0 Espacio de direcciones físicas:

BHE
FFFFFH FFFFEH
FFFFDH FFFFCH
FFFFBH FFFFAH

512kB

. . . .
. . . .

00007H 00006H
00005H 00004H
00003H 00002H
00001H 00000H
D15…..D8 D7…..D0
BUS DE DIRECCIONES A19…..A1

BUS DE DATOS D15…..D0 50


El mapa de memoria en el PC
(100000HÆ10FFEFH) Memoria alta
(Solo AT)
Segmento F (F0000HÆFFFFFH) 64Kb
64Kb Memoria superior:
64Kb
64Kb Video
Segmento B (B0000HÆBFFFFH) 64Kb ROM BIOS
Segmento A (A0000HÆAFFFFH) 64Kb
Segmento 9 (90000HÆ9FFFFH) 64Kb
. 64Kb
64Kb
. RAM de usuario:
64Kb
.
64Kb
. Programa
64Kb
. DOS residente
64Kb
. Vectores de Int.
64Kb
Segmento 1 (10000HÆ1FFFFH) 64Kb
Segmento 0 (00000HÆ0FFFFH) 64Kb
51
El mapa de memoria en el PC
Memoria superior, memoria alta
10FFEFH Memoria alta
(Solo AT)
100000H
FFFFFH
64Kb ROM BIOS
F0000H POST
EFFFFH
64Kb
E0000H Usos varios
(Tarjetas de red, otros periféricos)
DFFFFH
64Kb
D0000H Memoria superior
CFFFFH
64Kb Ampliaciones de la ROM BIOS
C0000H
BFFFFH
64Kb MDA CGA
B0000H
VIDEO
AFFFFH
64Kb VGA EGA
A0000H 52
El mapa de memoria en el PC

FFFFFH
64Kb ROM BIOS
F0000H POST (POWER ON SELF TEST)
EFFFFH
POST
•Primera rutina que se ejecuta al conectar el PC
• Realiza un chequeo de algunos periféricos
A0000H • Inicializa los puertos de algunos periféricos
• Efectúa un chequeo de memoria
9FFFFH
• Busca el SO y lo carga en la RAM de Usuario

RAM
De
Usuario

00000H 53
El mapa de memoria en el PC
RAM DE USUARIO

9FFFFH Parte transitoria del DOS


Parte residente del DOS

256 B Area de datos del DOS

256 B Area de datos del BIOS


003FFH

1KB Tabla de vectores de interrupción

00000H 54
El mapa de memoria en el PC
Tabla de vectores de interrupcion

• Es el primer KB de la memoria principal


del PC
• Contiene direcciones completas (4 Bytes)
de las rutinas de interrupción
(250 direcciones)
• Una interrupción es un salto a subrutina.
La dirección de dicha subrutina debemos
buscarla previamente en esta zona
de memoria.

003FFH

1KB Tabla de vectores de interrupción

00000H 55
El mapa de memoria en el PC
Area de datos de la ROM BIOS

La ROM BIOS se encuentra en memoria ROM


Necesita una zona de memoria RAM donde
Guardar sus datos

Ejemplos:
256B Comienzo del Buffer del teclado (00480H y 81H)
00400H Nº de tics (0046CH y 6DH y 6EH y 6FH)

00000H Area de datos de la ROM BIOS 56


El mapa de memoria en el PC
Area de datos de la ROM BIOS

La ROM BIOS se encuentra en


memoria ROM. Necesita una zona
de memoria RAM donde guardar
sus datos

Ejemplos:
Comienzo del Buffer del teclado:
256B
(00480H y 81H)
00400H Nº de tics:
(0046CH y 6DH y 6EH y 6FH)

00000H Area de datos de la ROM BIOS 57


MEMORIA EXTENDIDA

Memoria por encima de la dirección


FFFFF accesible solo en el modo
Protegido.

Límite para el 80286 Æ FFFFFF

Límite para el 80386 Æ FFFFFFFF


Memoria extendida
FFFFFH

Primer megabyte. Accesible en modo DOS

00000H 58
MEMORIA EXPANDIDA

Controlador Hardware
A19…..A0 de la A’23…..A’0
Memoria expandida

Direcciones lógicas Direcciones físicas

Bloque
Ventana accedido
accedida

Registro puntero al bloque accedido


59
INTERRUPCIONES
• Definición: Son saltos a subrutina
• Implica la interrupción del programa y el salto a una
subrutina. Antes de saltar el programa guarda en la pila
el contenido del registro de flags y la dirección de
retorno.

• TIPOS DE INTERRUPCION:
1) Interrupciones hardware
2) Interrupción no enmascarable (NMI)
3) Interrupciones internas (Excepciones o traps)
4) Interrupciones Software
60
INTERRUPCIONES
1) Interrupciónes hardware

Periférico0
0
INT
1 Periférico1
1
1 Periférico2
1
µP PIC 1 Periférico3
1
1 FI
Máscara de interrupciones interna 0
1
Periférico n

Máscara de interrupciones en el registro de flags 61


INTERRUPCIONES
1) Interrupciónes hardware. PIC

• PIC = Controlador de interrupciones programable


• Recibe todas las líneas de petición de interrupción
de los distintos periféricos.
• Asigna prioridad a cada línea.
IRQ 0 = Máxima prioridad
• Puede enmascararse individualmente cada línea de
petición de interrupción. (Hay que programar
directamente los puertos del PIC)
• Pueden enmascararse todas las interrupciones
hardware poniendo a “0” el flag I.
62
INTERRUPCIONES
1) Interrupciónes hardware. Solicitud de interrupción
1
2 Periférico n
INT
PIC
INTA
3
µP
4

1.- Uno o más periféricos solicitan una interrupción


2.- El PIC activa el cable INT (Solicitud de interrupción)
3.- El µP termina la instrucción que esté ejecutando en ese momento
y concede (Si Fi = 1) la interrupción (Activa INTA)
4.- El PIC Vuelca por el bus de datos un vector (8bits)
63
INTERRUPCIONES
1) Interrupciónes hardware. Salto a la subrutina

µP
6

5.- Por el bus de direcciones sale Vector x 4


6.- Se efectúa una lectura en 4 posiciones de memoria.
en la tabla de vectores de interrupción (Extraemos la
dirección de la rutina)
7.- salta a la subrutina 64
INTERRUPCIONES
Interrupciónes hardware.Tabla de vectores de
interrupción. Dirección de la rutina.
Supongamos el vector 43H:
43H x 4 = 10CH

003FF

3A 0010F Dirección de la rutina : 3A24 : 5E3D


24 0010E
5E 0010D
3D 0010C

00000
65
INTERRUPCIONES
Interrupciónes hardware.Tabla de vectores de
interrupción. Dirección de la rutina.
Supongamos el vector 43H:
43H x 4 = 10CH
Dirección de la rutina : 3A24 : 5E3D

1
2 Periférico n
INT
PIC
INTA
3
µP
4
43H
66
INTERRUPCIONES
Interrupciónes hardware.Tabla de vectores de
Supongamos el vector 43H:
43H x 4 = 10CH
003FF
Dirección de la rutina : 3A24 : 5E3D

3A 0010F

µP 5
24
5E
0010E
0010D
3D 0010C
C
IP
10CH
S

00000

67
INTERRUPCIONES
Interrupciónes hardware.Tabla de vectores de
Supongamos el vector 43H:
43H x 4 = 10CH
003FF
Dirección de la rutina : 3A24 : 5E3D

3A 0010F

µP 6
24
5E
0010E
0010D
3D 0010C
C
IP
10CH
S 3D

00000

68
INTERRUPCIONES
Interrupciónes hardware.Tabla de vectores de
Supongamos el vector 43H:
43H x 4 = 10CH
003FF
Dirección de la rutina : 3A24 : 5E3D

3A 0010F

µP 7
24
5E
0010E
0010D
3D 0010C
C
IP
10DH
S 5E 3D

00000

69
INTERRUPCIONES
Interrupciónes hardware.Tabla de vectores de
Supongamos el vector 43H:
43H x 4 = 10CH
003FF
Dirección de la rutina : 3A24 : 5E3D

3A 0010F

µP 8
24
5E
0010E
0010D
3D 0010C
C
IP
10EH
S 24 5E 3D

00000

70
INTERRUPCIONES
Interrupciónes hardware.Tabla de vectores de
Supongamos el vector 43H:
43H x 4 = 10CH
003FF
Dirección de la rutina : 3A24 : 5E3D

3A 0010F

µP 9
24
5E
0010E
0010D
3D 0010C
C
IP
10FH
3A S 24 5E 3D

00000

71
INTERRUPCIONES
Mecanismo de salto a subrutina:

1) SP-2 Æ SP
2) FLAGS Æ PILA
3) IF = 0 TF = 0
4) SP-2 Æ SP
5) CS Æ PILA
6)Vector x 4 + 2 Æ CS
7) SP-2 Æ SP
8) IP Æ PILA
9) Vector x 4 Æ IP
Fin de interrupción : IRET

72
INTERRUPCIONES
Primeras interrupciones:

INT0 Æ Error de divisor


INT1 Æ Ejecución paso a paso
INT2 Æ NMI
INT3 Æ Breakpoint
INT4 Æ Desbordamiento

73
INTERRUPCIONES
2) Interrupción no enmascarable (NMI)

NMI

µP

Es una interrupción hardware directamente solicitada por


algún dispositivo. No puede ser enmascarada por
software. No se efectúa ningún reconocimiento se
ejecuta a través del vector 2
74
INTERRUPCIONES

3) Interrupciones internas (TRAPS)


Las origina el programa cuando se
produce algún error que impide seguir la
ejecución del mismo.
Ejemplos:
División por cero
Ejecución paso a paso
Acceso a un dato no presente
etc

75
INTERRUPCIONES

4) Interrupciones software
El programa puede hacer uso del salto a
cualquiera de las subrutinas utilizando la
misma técnica de las interrupciones con la
instrucción:

INT vector
P.Ejemplo INT 21H
Las interrupciones software no son
enmascarables
76
INTERRUPCIONES

4) Interrupciones software
El programa puede hacer uso del
salto a cualquiera de las subrutinas
utilizando la misma técnica de las
interrupciones con la instrucción:

INT vector
P.Ejemplo INT 21H
Las interrupciones software no son
enmascarables
77
INTERRUPCIONES

4) Interrupciones software
En las interrupciones (Software o
Hardware) un mismo vector permite el
acceso a varias subrutinas.

Una vez comenzada la ejecución interviene lo


que se denomina la función (Contenido del
registro AH) que indica cual de ellas es la
que se va a ejecutar.

En ocasiones interviene lo que se denomina


subfunción (Contenido de AL)
78
INTERRUPCIONES
4) Interrupciones software
Interrupción 1AH
función 00 (AH = 00) Devuelve en AXDX el nº
de tics transcurridos desde el encendido del
PC.
función 01 (AH = 01) Dual de la anterior
función 02 (AH = 02) Devuelve en:
CH : Hora (en BCD)
CL : minutos (en BCD)
DH : Dia (en BCD)
79
INTERRUPCIONES
4) Interrupciones software
Ejemplo:
INT 21H función 9:
Saca por pantalla una cadena de caracteres
cuyo comienzo sea en la dirección : DS:DX y cuyo
final queda señalado por el signo “$”.

INT 21H función 4CH :


Finaliza el programa y devuelve el control al
sistema operativo (será la última rutina de cualquier
programa)

Las interrupciones software no son enmascarables 80


TEMPORIZADORES
T0 f0 = 18.2 Hz
N0

fe = 1.19318MHz
f1 = 33 KHz
N1

Programable
N2
Son divisores de frecuencia programables.
La frecuencia de entrada procede de un oscilador a cristal de
cuarzo (fe = 1.19318 MHz)
La frecuencia de salida es la de entrada dividida por Ni (16 bits)

81
TEMPORIZADORES
T0 f0 = 18.2 Hz
“1” Gate IRQ0
fe = 1.19318MHz T0 INT 8
PIC
N0 = 0000H P40H

La INT 8 se ejecuta 18,2 veces cada segundo.


La INT 8 incrementa la doble word contenida en
0040H:006CH, luego llama a la INT 1CH.

INT 1AH función 0


OBTIENE:
Nº de Tics en 0040H:006CH (Doble word)
y los devuelve en CXDX

82
TEMPORIZADORES
T1 y T2 Al refresco de memoria
“1” Gate
T1
Biestable f0 = 66 KHz
fe = 1.19318MHz N1 = 18 H P41H

33 KHz

Gate
T2

N2 = Programable P42H

P43H CONTROL

7 6 5 4 3 2 1 0
P61H

83
TEMPORIZADORES
Puerto 43H (Control del temporizador)
7 6 5 4 3 2 1 0

0 = Binario 000 = modo 0


001 = modo 1
1 = BCD
x10 = modo 2
x11 = modo 3
100 = modo 4
101 = modo 5
00 = Comando de enclavamiento
01 = Leer/Escribir byte bajo
10 = Leer/Escribir byte alto
11 = Leer/Escribir byte bajo y luego byte alto

00 = Temporizador 0
01 = Temporizador 1
10 = Temporizador 2
11 = Comando Read Back 84
TEMPORIZADORES
Esquema de bloques de un temporizador
Bus de datos (8 bits)

CR
CR (M) CR (L) Count register
CONTROL
CONTADOR
CE
Registro de estado Count element
CE
Latch de estado
OL
OL (M) OL (L)
Output Latch

Bus de datos (16 bits)


85
TEMPORIZADORES
Esquema de bloques de un temporizador
CR
CR (M) CR (L)
Count register
CONTROL

El Count Register es un
CONTADOR

CE Registro de 16 bits.
Registro de estado
Tiene dos entradas de 8 bits
OL (M) OL (L)
Latch de estado conectadas a los bits bajos
del bus de datos.

Contiene el N por el que se


DBUS
divide la frecuencia de entrada.

Se accede al CR mediante escritura en puerto (output).


Cargar el registro CR completo implica dos escrituras sucesivas en el
puerto.

86
TEMPORIZADORES
Esquema de bloques de un temporizador

CR (M) CR (L)
CONTROL

CONTADOR
CE
CE
Registro de estado
Count element
OL (M) OL (L)
Latch de estado
Se trata de un decontador

Funcionamiento: Carga el valor contenido en el CR.


DBUS
Descuenta, al ritmo del reloj, hasta llegar a 0000
Vuelve a cargar el contenido de CR y vuelve a
descontar hasta llegar a 0000.

La salida del temporizador es un pulso por cada cuenta


completa.
87
TEMPORIZADORES
Esquema de bloques de un temporizador
OL
CR (M) CR (L)
Output Latch
CONTROL

CONTADOR Contiene el valor del contador


CE
Registro de estado Se accede al OL mediante
OL (M) OL (L)
lectura (Input) en el mismo
Latch de estado
puerto en el que accedíamos
al CR.

DBUS

Acceso al OL:
1º Debemos aislar el OL (Output Latch) del CE (Contador)
Para ello enviaremos un comando de enclavamiento.
2º Leeremos el contenido del OL mediante dos operaciones
seguidas de lectura en puerto.
88
TEMPORIZADORES
Escritura en los puertos 40H, 41H y 42H
Programar mediante el puerto 43h el
o los puertos donde queremos escribir.

Escribir una o dos veces seguidas


en el puerto seleccionado

Se escribirà en el CR el divisor de
frecuencia del contador

89
TEMPORIZADORES
Escritura en los puertos 40H, 41H y 42H

f0 = 18.2 Hz
T0
0000 P 40H
P 43H

fe = 1.19318MHz
f1 = 33 KHz
T1
18h P 41H

Programable
T2
N2 P 42H

DBus
90
TEMPORIZADORES
Activar el sonido del Temporizador 2
1) Debe cargarse N2 en el puerto 42h
2)Debemos hacer:
Gate del T2 = 1
Entrada de la puerta AND = 1
Para lograr lo anterior debemos
hacer los bits 0 y 1 del puerto 61 h
“1”. Se deberán respetar los demás
bits

91
TEMPORIZADORES
Activar el sonido del Temporizador 2
P. ej. Obtener un sonido de 2 KHz (N2 = 600 = 0258H)

Gate
T2
fe = 1.19318MHz

P42H N2 = Programable

P43H CONTROL

7 6 5 4 3 2 1 0
P61H

1)Introducir palabra de control en P43H AL Æ P43H 10 11 011 0 Æ P43H


2)Introducir el byte menos significativo de N2 en P42H AL Æ P42H 58H Æ P42H
3)Introducir el byte mas significativo de N2 en P42H AL Æ P42H 02H Æ P42H
4)Activar el sonido (Gate = 1 , And = 1) AL Æ P61H xxxxxx11 Æ P61H
92
TEMPORIZADORES
Leer en los puertos 40h, 41h y 42h
1) Lo que leemos es el valor del
contador, contenido en el OL
tres métodos:
1a) Leer simplemente
(No recomendado)
1b) Comando de enclavamiento
1c) Comando Read back

93
TEMPORIZADORES
Leer en los puertos 40h, 41h y 42h
Comando de enclavamiento:
Antes de leer se envía al puerto 43h :
7 6 5 4 3 2 1 0
0 0 0 0 0 0

Nº del contador seleccionado

Se pueden enviar varios comandos de enclavamiento seguidos


Se pueden alternar órdenes de lectura y de escritura
El contador responde a la programación original
Este comando “congela” los registros OL de los temporizadores
94
seleccionados hasta su posterior lectura
TEMPORIZADORES
Leer en los puertos 40h, 41h y 42h

Comando read back:


Se envía al puerto 43h :
7 6 5 4 3 2 1 0
1 1 0

= 1 Queda congelado el contador 0


= 1 Queda congelado el contador 1
= 1 Queda congelado el contador 2
= 0 Quedan congelados los bytes de
estado de los contadores seleccionados
= 0 Quedan congelados los
contadores seleccionados

95
TEMPORIZADORES
Leer en los puertos 40h, 41h y 42h

Byte de estado de un contador:


7 6 5 4 3 2 1 0

Los mismos bits que la


palabra de control original
= 0 indica cuenta disponible para ser leída

Valor actual de la salida out del contador en cuestión

Si se congelan simultáneamente la palabra de


estado y la cuenta, se obtendrá primero la palabra
de estado y luego la cuenta
96
TECLADO
Puerto 60H

Código SCAN Controlador


BUFFER
TECLADO del
µC
Sincronismo Teclado

INT 9

Placa base

Código MAKE (Pulsar tecla) A = 00011100


Códigos SCAN
Código BREAK (Soltar tecla) A = 10011100
97
TECLADO
EL BUFFER DEL TECLADO
0040H : 0080H 1EH 0040H : 001A
0040H : 0081H 00H 0040H : 001B
0040H : 0082H 3EH 0040H : 001C
0040H : 0083H 00H 0040H : 001D

Primer byte Ultimo byte


Cabeza Cola

El Buffer del teclado se encuentra en el segmento 0040H


Cabeza = Primer carácter en ser procesado
Cola = Primer byte libre. (Donde se copiarán los códigos de la
siguiente tecla pulsada
98
TECLADO

INT 9 = Se examina el código SCAN recibido en


el puerto 60H. Si es un carácter se envía al buffer
del teclado:

Si es una tecla normal:


CODIGO SCAN CODIGO ASCII

Si es una tecla expandida:

CODIGO SCAN 00000000

99
TECLADO
El BIOS y el teclado. INT 16H

F:00
Si hay carácter en el Buffer del teclado devuelve:
En AH El código SCAN
En AL El código ASCII
Borra el carácter leído del Buffer
Si el Buffer está vacío:
Espera la pulsación de una tecla

F:01
Si hay carácter en el Buffer del teclado devuelve:
En AH El código SCAN
En AL El código ASCII
Fz = 1
No borra el carácter leído del Buffer
Si no hay carácter en el Buffer del teclado devuelve:
Fz = 0
No espera pulsación

100
TECLADO
El BIOS y el teclado. INT 16H

F:02
Lee el contenido de la posición de memoria 0040h:0017h y
lo copia en AL

7 6 5 4 3 2 1 0
Bl Bl Bl Shift Shift
Ins Alt Ctrl
May Num Des Izd Der

Para el teclado expandido Existen las funciones 10h, 11h y 12h.


Funciones 10h y 11h igual que las funciones 00 y 01 con la diferencia que
detectan mas teclas y que devuelven 0E0H en lugar de 00 para las
funciones ampliadas

101
TECLADO
El BIOS y el teclado. INT 16H

F:12h
Devuelve en AL:

7 6 5 4 3 2 1 0
Caps NumScroll Shift Shift
Ins Alt Ctrl
Lock Lock Lock Izd Der

Devuelve en AH:

7 6 5 4 3 2 1 0
Sys Caps NumScroll Alt Ctrl Alt Ctrl
Req Lock Lock Lock Dcha Dcha Izda Izda

102
TECLADO
COMBINACIONES ESPECIALES DE TECLAS

Ctrl- Pause(Break) Æ Activa la INT 1BH

Ctrl-Alt-Del Æ Pone 1234H en 0040H:0072H (Para evitar el


chequeo de memoria)
Salta a la dirección FFFF0 y reinicia el
ordenador

103
TECLADO
COMBINACIONES ESPECIALES DE TECLAS

ALT

Pulsando Alt se puede introducir en el buffer


del teclado un carácter ASCII Correspondiente al
introducido con el teclado Numérico.

Mientras se está tecleando se almacena el


valor provisional en 0040H:0019H. Al soltar “Alt”
se almacena en el Buffer del teclado y se pone a
cero la posición de memoria.
.

104
TECLADO
PUERTOS DEL TECLADO
Puerto 60H En lectura:
Código SCAN enviado por el teclado
Puerto 64H En lectura:
Registro de estado del teclado: Buffer de salida Lleno. (El
teclado ha colocado un dato
7 6 5 4 3 2 1 0 en el puerto 60H y la CPU
aún no la ha leído)
Buffer de entrada Lleno.(La
CPU ha colocado un dato en
el P60H y el teclado aún no la
ha leído)
Command/Data = 0 Æ Salida en Puerto 64H
= 1 Æ Salida en Puerto 60H
= 1 Æ Teclado activado
= 1 Æ Error time out durante la salida. (Se ha
enviado un dato hacia el teclado y este no ha
respondido en el margen de tiempo necesario
= 1 Æ Error time out durante la entrada
= 1 Æ Error de paridad 105
TECLADO
PUERTOS DEL TECLADO

Puerto 60H En escritura:


Salida de datos hacia el teclado
Tambíen algunos comandos

Puerto 64H En escritura:


Salida de comandos hacia el teclado

106
TECLADO
PUERTOS DEL TECLADO
Puerto 61H

7 6 5 4 3 2 1 0

0 Æ Teclado deshabilitad0

1 Æ Teclado habilitado

1 = Reconocimiento

Lectura directa de códigos SCAN:


1) Leer el puerto 60H
2) Poner el bit 7 del P61H a “1”
3) Poner el bit 7 del P61H a “0”

107
TECLADO
Retardo (Delay) y Factor de repetición (Tipematic parameters)

Retardo :

Tiempo que debe mantenerse presionada una tecla para que


el teclado la reconozca. (Evita toques breves no intencionados de
teclas)

00 = 0,25 sgs 01 = 0,5 sgs 10 = 0,75 sgs 11 = 1 sg

Factor de repetición

Número de veces por segundo que se repite el código SCAN


de una tecla si se mantiene presionada.
Varía entre 2 y 30 c.p.s.

108
TECLADO
Cambiar el Retardo y Factor de repetición de un teclado

1) Directamente
ADH Æ P64H (Comando deshabilitar teclado)
F3H Æ P60H (Comando poner Retardo y f. de repetición)
0 00 00100 Æ P60H (0,25 sgs y 20 cps)
AEH Æ P64H (Comando habilitar teclado)

2) Usando el BIOS
MOV AX, 0305H (Función 3 Subfunción 5)
MOV BL, 30 30 = 2 c.p.s (Un valor entre 0 y 31)
MOV BH, 0 0 = 0,25 sgs ( valor 0 o 1 o 2 o 3)
INT 16H

109
TECLADO
Comunicación teclado-CPU

FE Æ Reenvío (Recibido mal. Volver a enviar)


FA Æ Reconocimiento (Recibido correctamente)
F0 Æ Código de tecla soltada.
AA Æ BAT (Chequeo del teclado) Completado
FD Æ Fallo en el diagnóstico (Chequeos periódicos)

110
DMA
Acceso directo a memoria sin DMA

Memoria

µP

AL

1
2

111
DMA
Acceso directo a memoria con DMA
DMA
2

Hold
1 Holda Memoria
µP

112
DMA
1) Solicitud previa (Hold-Holda)
2)Programación de:
Modo: singular
Bloque

Dirección del bloque de datos a transferir

Incremento o decremento de direcciones

Tamaño del bloque a transferir

113
RTC (Reloj en tiempo real y CMOS RAM)
Puerto 70H
Puerto 71H Lectura de un registro:
00H Segundo
01H Segundo Alarma
02H Minuto Lectura del registro7
03H Minuto Alarma
04H
05H
Hora
Hora Alarma
MOV AL,7 ; 7 Æ AL
06H Dia de la Semana OUT 70H,AL ; AL Æ P70H
07H Dia del mes
08H Mes
09H Año JMP $+2 ; TIEMPO DE
0AH Registro A de estado ;ESPERA
0BH Registro B de estado
0CH Registro C de estado
0DH Registro D de estado IN AL,71H

. .
. .

32H Siglo

114
RTC (Reloj en tiempo real y CMOS RAM)

Registro A
Bit 7 UIP (Solo lectura)
Se pone a uno un poco antes de que se actualicen los
primeros 14 bytes de la memoria. Un cero garantiza 248µs.

Bits 6,5,4 Frecuencia del reloj que está conectado:


000 = 4.194304MHz
001 = 1.048576 MHZ
010 = 32768Hz

Bits 3,2,1,0 Frecuencia de la onda cuadrada y de la


interrupción periódica:

115
RTC (Reloj en tiempo real y CMOS RAM)
Registro A Bits 3,2,1,0

Reloj 1.048576 o 4.194304 MHz Reloj 32768 Hz


RS3 RS2 RS1 RS0 Velocidad INT Frecuencia SQW Velocidad INT Frecuencia SQW

0 0 0 0 (No actúa) (Nula) (No actúa) (Nula)


0 0 0 1 30.517µs 32718Hz 3.90625ms 256Hz
0 0 1 0 61.035µs 16384Hz 7.81250ms 128Hz
0 0 1 1 122.070 µs 8192Hz 122.070 µs 8192Hz
0 1 0 0 244.141 µs 4096Hz 244.141 µs 4096Hz
0 1 0 1 488.281 µs 2048Hz 488.281 µs 2048Hz
0 1 1 0 976.562 µs 1024Hz 976.562 µs 1024Hz
0 1 1 1 1.953125ms 512Hz 1.953125ms 512Hz
1 0 0 0 3.90625ms 256Hz 3.90625ms 256Hz
1 0 0 1 7.8125ms 128Hz 7.8125ms 128Hz
1 0 1 0 15.625ms 64Hz 15.625ms 64Hz
1 0 1 1 31.25ms 32Hz 31.25ms 32Hz
1 1 0 0 62.5ms 16Hz 62.5ms 16Hz
1 1 0 1 125ms 8Hz 125ms 8Hz
1 1 1 0 250ms 4Hz 250ms 4Hz
1 1 1 1 500ms 2Hz 500ms 2Hz 116
RTC (Reloj en tiempo real y CMOS
Registro B RAM)
Bit 7 (SET) Si =1 queda abortado cualquier actualización de los
primeros 14 bytes de la memoria

Bit 6 (PIE) Periodic Interrupt Enable


Bit 5 (AIE) Alarm Interrupt Enable
Bit 4 (UIE) Update Interrupt Enable
Bit 3 (SQWE) Square Wave Enable
Reset pone a cero los bits anteriores. A 1 estan habilitadas
las interrupciones (INT 70H)

Bit 2 (DM) Data Mode 1= Binario, 0= BCD

Bit 1 (24/12)

Bit 0 (DSE) Cambio de Hora en Abril y Octubre

117
RTC (Reloj en tiempo real y CMOS
Registro C RAM)
Bit 7 (IRQF) Flag de petición de interrupción
Se pone a 1 si están a 1 simultáneamente:
PF y PIE ó AF y AIE ó UF y UIE

Bits 6, 5 4 PF, AF, UF ( Flags Periódica, Alarma, Actualización)

Registro D
Bit 7 (VRT) Valid RAM TIME (= 0 Æ Batería baja)

118
RTC (Reloj en tiempo real y CMOS RAM)
Funcionamiento de la alarma:

Si el bit 5 del registro B está a “1” la alarma se activará :


Si se ha programado la hora el minuto y el segundo de la
alarma con un código válido se activará diariamente a la
misma hora

Si la hora contiene un código indiferente (0C0H-0FFH) se


activará cada hora

Si la hora y el minuto contienen códigos indiferentes se


activará cada minuto

Si la hora, el minuto y el segundo contienen códigos


indiferentes se activará cada segundo

Si se activa la alarma se llama a la int 4AH


119
RTC (Reloj en tiempo real y CMOS
RAM)
Acceso a la CMOS RAM a través del BIOS (INT 1AH)
Función 00
Devuelve en cxdx el nº de TICS
Función 1
Carga el contenido de cxdx en memoria
Función 2
Devuelve en CH hora
CL minutos
DH segundos
Función 3
Dual de la anterior
Función 4
Devuelve en CH siglo
CL año
DH mes
DL dia del mes
Función 5
Dual de la anterior

120
RTC (Reloj en tiempo real y CMOS
RAM)
Acceso a la CMOS RAM a través del BIOS (INT 1AH)

Función 2 Lectura de hora-minuto y segundo


Devuelve
CH hora en BCD 0 a 23
CL minuto en BCD 0 a 59
DH segundo en BCD 0 a 59

Función 3 Programa hora- minuto y segundo


Entrada:
CH hora en BCD 0 a 23
CL minuto en BCD 0 a 59
DH segundo en BCD 0 a 59

121
RTC (Reloj en tiempo real y CMOS
Acceso a la CMOS RAM aRAM)
través del BIOS (INT 1AH)

Función 4 Lectura de fecha


Devuelve
CH siglo (19 o 20)
CL año en BCD (00 a 99)
DH mes en BCD (1 a 12)
DL dia en BCD (1 a 31)

Función 5 Programa fecha


Entrada:
CH siglo (19 o 20)
CL año en BCD (00 a 99)
DH mes en BCD (1 a 12)
DL dia en BCD (1 a 31)

122
RTC (Reloj en tiempo real y CMOS
Acceso a la CMOS RAM aRAM)
través del BIOS (INT 1AH)

Función 6 Programa hora, minuto y segundo de la alarma


Entrada
CH Hora en BCD (00 a 23)
CL minutos en BCD (00 a 59)
DH segundos en BCD (00 a 59)

Función 7 Desactiva la alarma

123
El µP 80286 (1982)

µP 80286 Bus de direcciones (24 bits)

Bus de datos (16 bits)

124
Esquema de bloques del 80286
AU
BU
+ BASE DEL
SEGMENTO + DRIVERS Y LATCHS DE
DIRECCIONES
INTERFAZ
ABus
TEST PREFETCHER DEL
LIMITE DEL COPROCESADOR
DE
SEGMENTO CONTROL DEL BUS
LIMITE

TRANCEPTORES DE DBus
DATOS
COLA DE
INSTRUCCIONES
EU
ALU IU
COLA DE DECODIFICADOR
REGISTROS
control INSTRUCCIONES DE
GENERALES DECODIFICADAS INSTRUCCIONES
125
Esquema de bloques del 80286
BU = Bus Unit
Contiene los elementos de interfaz con los buses
externos; de Datos, Direcciones y Control. En esta zona
se encuentra una cola de instrucciones de 6 bytes,
semejante a la del 8086. No multiplexa los buses.

IU = Instrucción Unit.
Contiene el Decodificador de instrucciones y una
segunda cola de instrucciones ya decodificadas en la
que caben tres instrucciones.

EU = Ejecución Unit.
Contiene el juego de registros generales, la ALU y
el controlador principal.

126
Esquema de bloques del 80286

AU = Address Unit.
Genera las direcciones físicas de 24 bits:

En modo real según Segmento: Offset

En modo protegido efectúa la lectura de los


Descriptores de segmento, comprueba su
límite

127
Registros del µP 80286
Registros de Segmento
Registros generales
AX AH AL CS
BX BH BL DS
CX CH CL SS
DX DH DL ES
BP 16 bits
SI
Registros de Status y de control
DI
SP F (Flags)
16 bits IP
MSW
16 bits

128
Registros del µP 80286
Registros del modo protegido
GDTR
IDTR
LDTR
TR
16 bits
24 bits

GDTR = Registro que apunta a la tabla de los descriptores Globales


IDTR = idem de los descriptores de Interrupción
LDTR = idem de los descriptores Locales
TR = Registro de tarea

129
Registros del µP 80286
Registro de Flags
NT IOPL OF DF IF TF SF ZF AF PF CF
Acarreo
Paridad
Acarreo auxiliar
Zero
Signo
Trap (Paso a paso)
Máscara de interrupciones
Flag de dirección
Flag de overflow
Input/Output Privilege level
Nested Task
130
Registros del µP 80286
Registro MSW

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
TS EM MP PE

Conmutación de tarea
Emulador del coprocesador presente

Coprocesador presente

Paso al modo protegido

131
Registros del µP 80286
Registros del 286 en modo protegido
Registros ocultos (cache) asociados
47 40 39 16 15 0
CS D. Acceso Dirección de la base del Segmento Límite del Segmento

DS D. Acceso Dirección de la base del Segmento Límite del Segmento

SS D. Acceso Dirección de la base del Segmento Límite del Segmento

ES D. Acceso Dirección de la base del Segmento Límite del Segmento

TR D. Acceso Dirección de la base del Segmento Límite del Segmento

LDTR D. Acceso Dirección de la base del Segmento Límite del Segmento

GDTR Límite del Segmento

IDTR Límite del Segmento


132
Introducción al modo protegido
Selector (16 bits) Offset (16 bits)

Dirección accedida

Offset
DESCRIPTOR
BASE
LIMITE
DERECHOS DE ACCESO

133
Introducción al modo protegido
Los tres últimos bits del Selector son 000 (Debe ser múltiplo
De 8) así pues los sustituimos por:
a1a0 = RPL (Requested Privilege Level)
a2 = 0 La tabla de descriptores será la GDT (Globales)
= 1 Será la LDT (Locales)

Descriptor de un segmento normal en un 80286

RESERVADO RESERVADO
Byte7 Byte6
ACCESO BASE 23…..16
Byte5 Byte 4
BASE 15…..0
Byte3 Byte2
LIMITE 15…..0
Byte1 Byte0
134
Introducción al modo protegido
Descriptor de un segmento normal en un 80386

BASE 31 ...24 LIMITE ACCESO BASE 23…..16


XXXX
Byte 7 19…16 Byte5 Byte 4
BASE 15…..0 LIMITE 15…..0
Byte3 Byte2 Byte1 Byte0

El byte 6 contiene:
BITS 0...3 Æ 16....19 del límite
BIT 4, U= USUARIO (A disposición del programador)
BIT 5, X= RESERVADO
BIT 6; D= DEFAULT SIZE (0=16 bits, 1=32bits)
BIT 7; G=GRANULARIDAD:
G=0 Límite 16 bits .Máximo 64 k
G=1 Límite con 20 bits multiplicado por 4096
Máximo 4Gbytes.

135
Introducción al modo protegido
SEGMENTOS NORMALES:
DATOS Y CODIGO

SEGMENTOS ESPECIALES:
DE TABLA LDT
DE ESTADO DE TAREA
DE CALL GATE
DE TASK GATE
DE INTERRUPT GATE
DE TRAP GATE

136
Introducción al modo protegido
Byte de derechos de acceso en Segmentos normales:
7 6 5 4 3 2 1 0

DATOS P DPL 1 0 ED W A
7 6 5 4 3 2 1 0

CODIGO P DPL 1 1 C R A
P = Presente (P = 1 Segmento en memoria)
DPL = Descriptor privilege level
Bits 4,3 = 10 Æ Segmento normal de datos
Bits 4,3 = 10 Æ Segmento normal de codigo
ED = Expand down (=1 Æ Pila)
W = 0 Æ Escritura prohibida
R = 0 Æ Lectura prohibida
C = Conforming (C = 1 permite accesos sin el nivel de privilegio)
A = Accedido
137
Introducción al modo protegido
Segmento de pila
7 6 5 4 3 2 1 0

DATOS P DPL 1 0 ED W A

Zona permitida si ED = 1

Límite del segmento

Zona permitida si ED = 0
Base del segmento
138
Introducción al modo protegido
Tablas de Descriptores

•Todos los descriptores deben estar agrupados en tablas


•Tabla = 64 KB
• Æ Tabla = 8192 descriptores
•Descriptor = 8 Bytes
•Tablas de descriptores:
GDT Æ Tabla de los descriptores globales.
Descriptores del sistema operativo
(Código, Datos y algunos
especiales)
LDT Æ Tabla de los descriptores locales.
Descriptores de las distintas tareas
(Código,Datos y algunas Call Gates)
La base de la LDT está apuntada por LDTR
IDT Æ Interrupciones
La base esta donde señala IDTR
139
Introducción al modo protegido
Memoria virtual

Bit 7 del byte de derechos de acceso = 0 Æ Segmento no presente


Se ejecuta la INT 11 (Segment no present)
Significa:
El programa es mayor que la memoria disponible
No se encuentran todos los segmentos en
memoria
Sí se encuentran todos los descriptores en la
tabla

Se ejecuta:
Decide que segmento presente puede ser borrado
Carga al segmento solicitado y pone a 1 el bit P
de su descriptor

140
Introducción al modo protegido
Memoria Plana

Si en un descriptor de un 80386 o posterior el bit de


GRANULARIDAD es “1” :
El límite (tamaño) del segmento es 4096 x Límite(20 bits)
Si, además, Límite = FFFFF el segmento será:
4 Gb (¡Toda la memoria!)
Desaparece el concepto de segmento, se accede a
la memoria con direcciones absolutas de 32 bits.
El 80386 y siguientes tienen registros extendidos de
32 bits.

141
Introducción al modo protegido
TIPOS DE DESCRIPTORES

PERMITIDO EN LAS TABLAS

TIPO DE DESCRIPTOR

NORMALES DE SEGMENTO DE DATOS GTD-LTD


DE SEGMENTO DE CODIGO GTD-LTD

DE TABLA LTD LTD


DE ESTADO DE LA TAREA LTD
DE CALL GATE LTD-GTD
ESPECIALES DE TASK GATE LTD-GTD-IDT
DE INTERRUPT GATE IDT
DE TRAP GATE IDT

142
Introducción al modo protegido
ACCESO A MEMORIA A TRAVES DE UNA CALL GATE

CALL SEGMENTO :OFFSET

CALL GATE:
SELECTOR SEGMENTO DESTINO
OFFSET DESTINO
CUENTA DWORDS

DESCRIPTOR:
BASE DEL SEGMENTO

143
Introducción al modo protegido
CALL GATE

80286
RESERVADO
P DPL 0 0 1 0 0 X X X DWORD CONT
SELECTOR DESTINO Y X X
OFFSET DESTINO

80386

OFFSET DESTINO 31…16 PDPL 0 0 1 0 0 XX XDWORDCONT


SELECTOR DESTINO Y X X OFFSET DESTINO 15..0

144
Introducción al modo protegido
CONMUTACION DE TAREAS

TSS = TASK STATE SEGMENT

DESCRIPTOR DE TSS Æ COINCIDE CON UN DESCRIPTOR DE UN


SEGMENTO NORMAL. SOLO SE DIFERENCIAN EN EL BYTE DE
DERECHOS DE ACCESO:

7 6 5 4 3 2 1 0

DATOS P DPL 1 0 ED W A
7 6 5 4 3 2 1 0

TSS P DPL 0 0 0 B 0
145
Introducción al modo protegido
TSS OBLIGATORIO
Puntero a mapa de E/S per T 64

Resto de Registros

EIP (Puntero de Instrucción) 20


CR3 (Puntero a tabla de Páginas) 1C
SS2 18
ESP2 14
SS1 10
ESP1 0C
SS0 08
ESP0 04
Puntero a la tarea anterior 00 146
Introducción al modo protegido
Acceso a un TSS (Corresponde a la tarea activa) partiendo de TR

Apunta al descriptor de TSS


TR

Punt. a Mapa de E/S P. T


LTD
BASE LÍMITE SG
FS
DS
SS
CS
ES
Registros cache asociados EDI
ESI
EBP
ESP
EBX
EDX
ECX
EAX
EFLAGS
EIP (Puntero de instrucción)
CR3 (Puntero a Tabla de páginas)
SS2
ESP2
SS1
ESP1
SS0
ESP0
Puntero a T.Anterior

147
Introducción al modo protegido
Acceso a una interrupción (INT N) partiendo de IDTR

TABLA IDT

NX8 Punto de entrada

Puerta de Descriptor
interrupción Segmento de codigo

BASE

Segmento de
IDTR Código accedido
BASE LIMITE

148
Introducción al modo protegido
Descriptores de TASK GATE, INTERRUPT GATE y TRAP GATE

Descriptor de TASK GATE

D
NO USADO P P 0 0 1 0 1 NO USADO
L

SELECTOR DE TSS NO USADO

Descriptor INTERRUPT GATE y TRAP GATE


D
OFFSET 31 ...16 P P 0 0 1 0 0 0 0 0
L

SELECTOR SEGMENTO OFFSET 15…..0

149
Paginación
DIRECCION LOGICA
UNIDAD DE SEGMENTO:OFFSET
EJECUCION

DIRECCION LINEAL
SEGMENTACION (56F987CCH)

PAGINACION

DIRECCION FISICA
(3A8C9757H)

150
Paginación
-Está activada si el bit 31 del registro CR0 es 1.
-Se trata de un mecanismoo de traslación de direcciones.
-Maneja zonas de memoria llamadas páginas (4Kb).
-Es mas eficaz la protección de acceso a las páginas que
a los segmentos.
Memoria virtual basada en páginas

20 bits 12 bits

CR3 Dirección del Directorio de Páginas Reservado

CR2 Dirección lineal del fallo de páginas


CR1 Reservado
CR0 P E T EMP
G T SMPE

151
MECANISMO DE PAGINACION
TLB(Translation lookaside Buffer)

4kb
Encuentra la
Posición de
DIRECTORIO TABLA OFFSET memoria
12 PAGINA
10 DIRECTORIO 10 4kb ACCEDIDA
DE Encuentra
PAGINAS un PTE

X4 4kb X4 4kb

1 byte
Encuentra un PDE 4kb

4kb
4bytes
CR3
CR2
4bytes
CR1
1 CR0 152
Paginación
MECANISMO DE PAGINACION
PDE

Dirección de la tabla de páginas LIBRE A U/SR/W P

PTE

31 12 11 10 9 65 2 1 0
Dirección de la páginas LIBRE DA U/SR/W P

153
80386 (1986) DX

µP 80386 Bus de direcciones (32 bits)

Bus de datos (32 bits)

154
80386 (SX)

µP 80386 Bus de direcciones (24 bits)

Bus de datos (16 bits)

155
Registros del 80386
Registros generales
EAX AH AX AL
Registros de Segmento
EBX BH BX BL
CS
ECX CH CX CL
DS
EDX DH DX DL
SS
EBP BP
ES
ESI SI
FS
EDI DI
GS
ESP SP
16 bits 16 bits

EFLAGS

EIP

156
Registros del 80386
FLAGS
31 17 16 15 0
VR
MF Igual que en el 80286

VM = Virtual mode RF = Resume Flags

CONTROL
20 bits 12 bits

CR3 Dirección del Directorio de Páginas Reservado

CR2 Dirección lineal del fallo de páginas


CR1 Reservado
CR0 P E T EMP
G T SMPE

157
Ejecucion en pipeline

Fetch Fetch Fetch Fetch Fetch Fetch


BU
1 2 3 4 5 6
Decodifica Decodifica Decodifica Decodifica Decodifica
DU
1 2 3 4 5
Ejecuta Ejecuta Ejecuta Ejecuta
EU
1 2 3 4

158
80486 (1989)

µP 80486 Bus de direcciones (32 bits)

Bus de datos (32 bits)

159
80486 (1989)
µP 80486

80387
µP 80386

CACHE
(8kb)

Arquitectura RISC : Casi todas las instrucciones se ejecutan en


un solo pulso de reloj.
Cache con controladora incluida de 8 Kb para datos y programa
Mejor acceso a memoria (Modo Ráfaga)
Buffers de escritura en la BIU

160
80486 (1989)
Memoria cache : Memoria estática (rápida) de
tipo asociativo (CAM) memoria direccionable
por su contenido:
ETIQUETA LINEA CACHE

CAPACIDAD = Nº DE BYTES DE LA LÍNEA CACHE X Nº DE LINEAS (SETS)


ETIQUETA = CONTIENE LA DIRECCION DE LA LINEA CACHE
LINEA CACHE= CONTIENE UNA COPIA DE UN NUMERO( POTENCIA
DE DOS) DE BYTES CONSECUTIVOS DE LA MEMORIA
161
80486
Memoria cache: EJEMPLO Linea cache = 8 bytes
21 bits
Capacidad = 2Kb
8 bits
TAG SET LINEA CACHE = 8 bytes
0
1
2
3
4
5
6 256 Líneas
7
. . . . . . . . . . .

253
254
255

NO
SE COMPARA CON EL TAG
SELECCIONA UN SET INTERVIENEN

DIRECCION DE 32 BITS SOLICITADA POR LA CPU 162


80486
Memoria cache: Ejemplo2 Linea cache = 16 bytes
Capacidad = 8Kb
19 bits 9 bits
TAG SET LINEA CACHE = 16 bytes
0
1
2
3
4
5
6 512 Líneas
7
. . . . . . . . . .

509
510
511

NO
SE COMPARA CON EL TAG
SELECCIONA UN SET INTERVIENEN

DIRECCION DE 32 BITS SOLICITADA POR LA CPU 163


80486
Memoria cache del 80486 Linea cache = 16 bytes
Capacidad = 8Kb
4 vias

DIRECTORIO
128 ENTRADAS MEMORIA CACHE DE 8 kB

Linea de 16 bytes Linea de 16 bytes Linea de 16 bytes Linea de 16 bytes Linea de 16 bytes 128
SETS

Via 0 Via 1 Via 2 Via 3


CADA ENTRADA
DEL DIRECTORIO TAG
TAG 0 TAG 1 TAG 2 TAG 3 VALIDO LRU

SE COMPARA CON SELECCIONA UN SET

LOS 4 TAGS NO INTERVIENEN

DIRECCION DE 32 BITS SOLICITADA POR LA CPU 164


80486
Memoria cache del 80486
Algoritmo LRU (Least Recently Used)

¿TODAS LAS NO SE REEMPLAZA UNA


LINEAS
VALIDAS? LINEA NO VALIDA

SI

SI ¿B0 = 0? NO

¿B1 = 0? NO
SI ¿B2 = 0?

NO SI

Linea 0 Linea 1 Linea 2 Linea 3


165
80486
Memoria cache del 80486
Cacheabilidad de las páginas
PDE
31 80386/80486 12 11 10 9 5 2 1 0
Dirección de la tabla de páginas LIBRE A U/S R/W P
31 12 11 10 9 6 5 4 3 2 1 0
Dirección de la tabla de páginas LIBRE D A PCD PWT U/S R/W P
PTE
31 80386/80486 12 11 10 9 65 2 1 0
Dirección de la páginas LIBRE DA U/SR/W P

31 12 11 10 9 5 4 3 2 1 0
Dirección de la página LIBRE D A PCD PWT U/S R/W P
166
80486
Memoria cache del 80486
Cacheabilidad de las páginas
PDE
80486
31 12 11 10 9 6 5 4 3 2 1 0
Dirección de la tabla de páginas LIBRE D A PCD PWT U/S R/W P

PTE
80486
31 12 11 10 9 5 4 3 2 1 0
Dirección de la página LIBRE D A PCD PWT U/S R/W P

PCD (Page Cache Disable)


PWT (Page Write Through)
167
80486
Memoria cache del 80486
Cacheabilidad de las páginas
PWT (Page Write Through)
Lectura:
Si el dato está en la caché, la lectura se
efectúa en la caché (Acierto).
Si el dato no está en la caché la lectura se
efectúa en la memoria principal y luego se copia
en la caché mediante procedimiento LRU.(Fallo)
Escritura:
Se escribe en la memoria principal y si la
dirección utilizada está en la caché también se
escribe en la caché

168
80486
Memoria cache del 80486
Cacheabilidad de las páginas

PWT (Page Write Back)


Lectura:
Igual que la caché de tipo write through
Escritura:
Si la dirección utilizada está en la caché se
actualiza solo la caché a no ser que debamos
borrar la caché debido a un nuevo acceso, en
cuyo caso se escribe en la memoria principal

169
Registros del 80486
31 FLAGS 18 17 16 15 0
AV R
CM F Igual que en el 80286

VM = Virtual mode AC = Alignement Check


RF = Resume Flags

CONTROL
20 bits 12 bits

CR3 Dirección del Directorio de Páginas Reservado

CR2 Dirección lineal del fallo de páginas


CR1 Reservado
CR0 P C N AW E T EMP
G DW MP T SMPE

170
Registros del 80486
31 FLAGS 18 17 16 15 0
AV R
CM F Igual que en el 80286

VM = Virtual mode AC = Alignement Check


RF = Resume Flags

AC = Alignement Check Æ Si este flag está a 1 y


también lo está el bit AM de CR0 se produce una
excepción nº 17 cuando intentamos acceder a un dato
no alineado

171
Registros del 80486
CONTROL
20 bits 12 bits

CR3 Dirección del Directorio de Páginas Reservado

CR2 Dirección lineal del fallo de páginas


CR1 Reservado
CR0 P C N AW NE T E M P
G DW MP ET SMP E

PG = Pagin enable NE = Numéric Exception


CD = Caché disable
NW = Not Write through ET = Procesor Extensión
tipe (Desaparece)
AM = Aligment Mask
WP = Write Protect
172
Variantes del 80486

25 MHz
x2 50 MHz

80486 DX2 50

33 MHz
x2 66 MHz

80486 DX2 66

33 MHz
x3 100 MHz

80486 DX4 100


173
Variantes del 80486

80486 SX

Sin Coprocesador interno

174
PENTIUM
CACHE DE INSTRUCCIONES

BUFFER DE PREFETCH
DECODIFICADOR DE INSTRUCCIONES

BTB UNIDAD DE CONTROL

PIPELINE U

PIPELINE V FPU

CACHE DE DATOS

BTB (BRANCH TARGET BUFFER) Unidad de predicción de saltos

FPU (FLOATING POINT UNIT)


175
PENTIUM
PIPELINE U
CACHE DE INSTRUCCIONES PIPELINE V

PREFETCHER

BUFFER BUFFER
DECISION DE PREFETCH
DE PREFETCH
SIMPLE

DECODIFICADOR CONTROL DECODIFICADOR


(ETAPA 1) U/V (ETAPA 1)

(ETAPA 2) (ETAPA 2)
REGISTROS

ALU (U) ALU (U)


GENERADOR
DE
DIRECCIONES

CACHE DE DATOS

176
PENTIUM

EJECUCION SUPERESCALAR

I1 I2 Deben ser simples (Ejecutables en un solo pulso de reloj)

IF
I1 es simple
AND I2 también es simple
AND Destino de I1 no es Fuente de I2
AND Destino de I2 no es Destino de I1
THEN
I1 se envía al PIPELINE U
I2 se envía al PIPELINE V

ELSE Se ejecuta solo I1 en el PIPELINE U. I2 queda esperando


para luego compararse con I3 en la forma anterior

177
PENTIUM

BTB (Unidad de predicción de saltos condicionales)

Consta de una memoria cache de 256 entradas.

Una Entrada = Dirección del salto


1 bit de validación
2 bits de historia:
Acierto
11
Acierto Fallo
10
Acierto Fallo
01

00
Fallo
Acierto
178
PENTIUM

CACHE DE INSTRUCCIONES

32 BYTES

4 kB 128 LINEAS

4 kB 128 LINEAS

ACCESO A LA CACHE:
Se intenta acceder a la dirección:

TAG LINEA DW
Cada byte tiene su propio bit de paridad

179
PENTIUM
CACHE DE datos

32 BYTES

4 kB 128 LINEAS

4 kB 128 LINEAS

ACCESO A LA CACHE:
Se intenta acceder a la dirección:

TAG LINEA DW
Cada byte tiene su propio bit de paridad
180
VIDEO
Modo Resol box coloresBuffer Páginas
00 T 40x25 8x8 2 2k B8000
01 T 40x25 8x8 16 2k B8000
02 T 80x25 8x8 2 2k B8000
03 T 80x25 8x8 16 4k B8000
04 G 320X200 8x8 4 16k B8000
05 G 320x200 8x8 2 16k B8000
06 G 640x200 8x8 2 16k B8000
07 T 80x25 9x14 2 4k B0000 1
08 G 160x200 8x8 16k B8000
09 G 320x200 8x8 32k B8000
0A G 640x200 8x8 32k B8000
0D G 320x200 8x8 16 8k A0000 8
0E G 640x200 8x8 16 16k A0000 4
0F G 640x350 8x14 2 28k A0000 2
10 G 640x350 8x14 16 28k A0000 2
11 G 640x480 8x16 2 38k A0000 1
12 G 640x480 8X16 16 38k A0000 1
13 G 320x480 8x8 256 38k A0000 1
181
VIDEO
Modo Resol box coloresBuffer Páginas

03 T 80x25 8x8 16 4k B8000

Cada carácter se representa por


dos bytes en memoria. Uno para
el código ascii y el otro para el
atributo.
Memoria requerida:
80x25x2 = 4000 bytes
4k y sobran 96 bytes
182
VIDEO
Modo Resol box coloresBuffer

04 G 320x200 8x8 4 16k B8000

Cada pixel viene definido por dos


bits
Memoria total requerida:
320x200x2 = 128000 bits
128000 / 8 = 16000 bytes
16k y sobran 384 bytes
183
VIDEO
Modo Resol box coloresBuffer

0D G 320x200 8x8 16 8k A0000

Cada byte de memoria señala a 8


pixels
320x200 = 64000 pixels
64000 / 8 = 8000
Memoria requerida:
8k
184
VIDEO
VIDEO
MDA (Monochrome Display Adapter) modo 7
Ci Carácter i
B0FFFH
Libre
B0FA0H
Atr 1999 B0F9FH
Car 1999 B0F9EH
Atr 1998 B0F9DH
Car 1998 B0F9CH

C0 C1 C2 C3 . . . . . . . . . . . . . . . C79
. C80 C81 C82 C83 . . . . . . . . . . . . . . . C159
.
4Kb
.
.
.
Atributo 3 B0007H
Carácter 3 B0006H
Atributo 2 B0005H
Carácter 2 B0004H
Atributo 1
Carácter 1
Atributo 0
B0003H
B0002H
B0001H C1920 . . . . . . . . . . . . . . . . . . . . . C1999
Carácter 0 B0000H

185
VIDEO
MDA (Monochrome Display Adapter) modo 7
8
El byte de atributo en MDA
7 6 5 4 3 2 1 0
1 = Brillo
0 = No Brillo

1 = Intermitente
14
0 = Fijo

000 0 0 0 Æ Oculto
000 0 0 1 Æ Subrayado
000 1 1 1 Æ Normal
000 0 0 0 Æ Inverso
186
VIDEO
CGA (Color Graphics Adapter)
B8FFFH
Libre Modo 3 (Texto 80x25 16 colores)
B8FA0H
At 1999 B8F9FH
Car 1999 B8F9EH
At 1998 B8F9DH
Car 1998 B8F9CH
Ci Carácter i
Atributo
Carácter
Atributo Página 0
Carácter

. C0 C1 C2 C3 . . . . . . . . . . . . . . . C79
4Kb
. C80 C81 C82 C83 . . . . . . . . . . . . . . . C159
.
.
Atributo 3 B8007H
Carácter 3 B8006H
Atributo 2 B8005H
Carácter 2 B8004H
Atributo 1 B8003H
Carácter 1 B8002H
Atributo 0 B8001H C1920 . . . . . . . . . . . . . . . . . . . . . C1999
Carácter 0 B8000H

Página 1 B9000H Æ B9FFFH


Página 2 BA000H Æ BAFFFH
Página 3 BB000H Æ BBFFFH 187
VIDEO
CGA (Color Graphics Adapter)
8
El byte de atributo en CGA (Modos 0 y 2)
7 6 5 4 3 2 1 0
1 = Brillo
0 = No Brillo
8 1 = Intermitente
0 = Fijo

000 0 0 0 Æ Oculto
000 0 0 1 Æ Subrayado
000 1 1 1 Æ Normal
000 0 0 0 Æ Inverso

188
VIDEO
CGA (Color Graphics Adapter)
El byte de atributo en CGA (Modos 1 y 3)

r g b I R G B
7 6 5 4 3 2 1 0 Color del fondo
0000 Æ Negro
0001 Æ Azul
0010 Æ Verde
0011 Æ Ciano
0100Æ Red
Color del Primer plano 0101 Æ Magenta
000 Æ Negro 0110 ÆMarrón
001 Æ Azul 0111 Æ Gris Brillante
010 Æ Verde 1000 Æ Gris oscuro
011 Æ Ciano 1001 Æ Azul Brillante
100Æ Red 1010 Æ Verde Brillante
101 Æ Magenta 1011 Æ Ciano Brillante
110 ÆMarrón 1100Æ Red Brillante
111 Æ Gris Brillante 1101 Æ Magenta Brillante
1110 ÆAmarillo
1 = Intermitente 1111 Æ Blanco 189
0 = Fijo
VIDEO
CGA (Color Graphics Adapter)
Modo 4 (Gráfico 320x200 4 colores)
Cada color viene definido por dos bits
Cada byte define a cuatro pixels
80 bytes definen una línea de pantalla (320 pixels)

Fila 0

B804FH

80 Bytes
B8003
B8002
B8001
B8000

190
VIDEO
CGA (Color Graphics Adapter)
LIBRE
Modo 4 (Gráfico 320x200 4 colores)
80 Bytes

Filas
Impares
80 Bytes

80 Bytes Fila 0
Fila 1
Fila 2
Fila 3
Fila 4
Fila 5
LIBRE Fila 6
Fila 7

80 Bytes

Filas
Pares
80 Bytes

80 Bytes Fila198
Fila199

191
VIDEO
CGA (Color Graphics Adapter)
Modo 4 (Gráfico 320x200 4 colores)
BBFFF RESERVADO 4 Colores a elegir de entre dos
BBF40 192 bytes
BBF3F paletas posibles:
Paleta 0
00 Æ Negro
Filas 1, 3, 5, 7…….199 01 Æ Verde
8000 bytes
10 Æ Rojo
11 Æ Marrón
BA000
B9FFF RESERVADO Paleta 1
B9F40 192 bytes
B9F3F 00 Æ Negro
01 Æ Ciano
10 Æ Magenta
Filas 0, 2, 4, 6…198 11 Æ Blanco
8000 bytes
7 6 5 4 3 2 1 0
Registro de
Selección de color
B8000 192
Puerto 3D9
VIDEO
EGA (Enhanced graphics adapter)
*Compatibilidad con todos los modos de video anteriores

*Modos semejantes a los de CGA :


(640x200) (320x200) pero con 16 colores

*Modo propio de EGA:


(640x350) con 16 colores simultáneos en pantalla

*Salidas de video digitales con dos bits por color


64 colores posibles (Paleta)

*Necesitaba monitor especial adaptado a las nuevas


caracteristicas de video

193
VIDEO
EGA (Enhanced graphics adapter)
EGA y luego VGA utiliza memoria en la propia tarjeta gráfica.
La memoria en la tarjeta adopta la disposición denominada:
“Planos de bits”

Pixel en pantalla

64kb 4 Memorias de 64 Kb
en paralelo
64kb
64kb Un bit por plano (4
64kb en total) definen un
pixel

194
VIDEO
Paleta en una tarjeta EGA
Pixel de 4 bits

Apunta a un elemento
de la paleta

Paleta:
16 registros de 6 bits

Un elemento de la paleta B
Colores primarios
G
(mas intensos)
R
b
Colores secundarios
g
(menos intensos) 195
r
VIDEO
Paleta en una tarjeta VGA

Paleta interna:
16 registros de 6 bits
Registro de selección de color
Apunta a un elemento
de la paleta

4 o 6 bits 4 o 2 bits

8 bits Paleta externa:


256 registros de 18 bits

DAC DAC DAC


6 bits 6 bits 6 bits

196
Salidas analógicas al monitor
R G B
VIDEO
Paleta en una tarjeta VGA

Paleta externa:
256 registros de 18 bits

VGA tiene modos de 16


colores y modos de 256 colores
simultáneamente presentes en DAC DAC DAC
6 bits 6 bits 6 bits
la pantalla.
El número de colores
posibles es de 262.144 R G B
Salidas analógicas al monitor

197
VIDEO
EGA (Enhanced graphics adapter)
El µP accede a la RAM de vídeo (Lectura o escritura)
a) Lectura
RAM El contenido de los cuatro planos pasa a los LATCHS

4 LATCHS 4 Memorias de 64 Kb
(uno por plano) en paralelo

FFFF
64kb AFFFF 64kb 64kb 64kb 64kb

RAM
de
Vídeo

0000
A0000

198
VIDEO
EGA (Enhanced graphics adapter)
Acceso a los bit planes
RAM
64Kb
AFFFF 64Kb
64 Kb
64 Kb

µP 64Kb

A0000
Lectura:
El µP efectúa una lectura en memoria
Debe acceder a la RAM de vídeo (Segmento A)
Lo que recibe es algo que procede de los LATCHS

199
VIDEO
EGA (Enhanced graphics adapter)
Acceso a los bit planes
RAM
64Kb
AFFFF 64Kb
64 Kb
64 Kb

µP 64Kb

Lectura:
A0000 Siempre que se efectúa una lectura en una posición
de memoria dentro de la RAM de vídeo se cargan los 4
LATCHS con el contenido de la misma posición de
memoria en los cuatro planos

200
VIDEO
Lectura:
Siempre que se efectúa una lectura en una posición
EGA
de memoria dentro de la RAM de vídeo se cargan los 4
LATCHS con el contenido de la misma posición de Acceso a los bit planes
memoria en los cuatro planos:
64Kb
MOV AX,0A000H
MOV DS,AXRAM 64Kb
MOV AL, [3CF2] 64 Kb
64 Kb
AFFFF

µP 64Kb 3CF2

3CF2

A3CF2 3CF2

3CF2

A0000

201
VIDEO
EGA / VGA
Escritura:
MOV AX,0A000H
MOV DS,AX AL [A3CF2]
Acceso a los bit planes
MOV [3CF2], AL 64Kb
RAMA3CF2 dentro de la RAM de vídeo
El µP escribe en la posición 64Kb
El contenido de los cuatro Latchs (modificado) se escribe en la 64 Kb
posición 3CF2 en los cuatro bit planes 64 Kb
AFFFF

µP 64Kb 3CF2

3CF2

A3CF2 3CF2

3CF2

A0000

202
VIDEO
EGA y VGA
Puertos asociados
Controlador gráfico:
Puertos 3CE y 3CF (Nº de registro-valor)

Nº registro Æ Nombre
00 Set / Reset
01 Enable Set / Reset
02 Color compare
03 Function Select
04 Read map select
05 mode
06 Miscelaneous
07 Color Don’t care
08 Bit mask
203
VIDEO
EGA y VGA
Puertos asociados
Controlador gráfico:
Puertos 3CE y 3CF (Nº de registro-valor)

Nº registro Æ Nombre
Registro de modo
00
01
02 Modos de
03 Modos de Escritura:
04 Lectura: 00
05 mode 0 01
06 1 10
11
07
08
204
VIDEO
EGA /VGA
Acceso a los bit planes
Lectura 0 64Kb
RAM 64Kb
64 Kb
1) El µP lee en la dirección A3CF2
2) Los contenidos de las direcciones 3CF2 de los 4 Bit planes 64 Kb
AFFFF
se carga en los 4 Latchs.
3) El contenido del Latch indicado en el puerto Read Map se
recibe en el µP

µP 64Kb 3CF2

3CF2

A3CF2 3CF2

3CF2

Read Map Select


A0000 1 0

3
2
1
0 3
2
1
0
205
VIDEO
EGA /VGA
Acceso a los bit planes
Lectura 1 64Kb
RAM 64Kb
64 Kb
1) El µP lee en la dirección A3CF2
2) Los contenidos de las direcciones 3CF2 de los 4 Bit planes 64 Kb
AFFFF
se carga en los 4 Latchs.
3) El byte recibido en el µP indica la presencia o ausencia del
color pedido en el puerto “Color Compare” con los 8 pixels
indicados en los latchs.

Buscamos el color 1101 (En el ejemplo)


µP 64Kb 3CF2

3CF2

A3CF2 3CF2
Color Don’t Care
3CF2
1 1 1 1
Color Compare
A0000 1 1 0 1

3 1 1 0 0 1 1 0 1

2 1 0 0 0 0 1 1 1

1 0 0 1 1 0 0 0 0

0 1 1 0 1 1 1 0 1 3
2
1 0 0 0 0 1 0 1 1
0
206
VIDEO
EGA /VGA
Acceso a los bit planes
Lectura 1 64Kb
RAM 64Kb
64 Kb
1) El µP lee en la dirección A3CF2
2) Los contenidos de las direcciones 3CF2 de los 4 Bit planes 64 Kb
AFFFF
se carga en los 4 Latchs.
3) El byte recibido en el µP indica la presencia o ausencia del
color pedido en el puerto “Color Compare” con los 8 pixels
indicados en los latchs.

Ahora el color buscado es 1x01 (Dos colores)


µP 64Kb 3CF2

3CF2

A3CF2 3CF2
Color Don’t Care
3CF2
1 0 1 1
Color Compare
A0000 1 1 0 1

3 1 1 0 0 1 1 0 1

2 1 0 0 0 0 1 1 1

1 0 0 1 1 0 0 0 0

0 1 1 0 1 1 1 0 1 3
2
1 1 0 0 1 1 0 1 1
0
207
VIDEO
Acceso a los bit planes EGA /VGA

Modos de escritura

1) Se supone que antes de una operación de


Escritura debe efectuarse una de lectura que
cargue los cuatro Latchs.

2) Luego se efectúa una modificación de los bits no


enmascarados (Una operación lógica)

3) El contenido modificado de los Latchs se escribe


en los cuatro planos

208
VIDEO
EGA
EGA/ VGA
/VGA
Escritura
1) Previamente auna escritura se procede a una lectura
que carga los latchs
64Kb
64Kb 64Kb
64 Kb 64Kb
64 Kb
64 Kb 2) Después de una
64 Kb
modificación se procede a la
escritura del contenido de los
4 Latchs en los 4 planos
3CF2

3CF2

3CF2

3CF2

3 1 1 0 0 1 1 0 1

2 1 0 0 0 0 1 1 1
3 0 1 1 0 1 1 0 0

1 0 0 1 1 0 0 0 0
2 0 0 1 0 1 1 1 0

0 1 1 0 1 1 1 0 1
3 1 0 0 1 1 1 0 0 0
2 0 0 1 1 1 1 1 0 0
3
1 2
0 1
0 209
VIDEO
Acceso a los bit planes EGA /VGA
Controlador gráfico:
Puertos 3CE y 3CF (Nº de registro-valor)

Nº registro Æ Nombre Set/Reset


00 Set / Reset
01 Enable Set/Reset
Operando para los cuatro
02
Latchs (en el modo 0)si el
03 registro EnableSet/Reset esta
04 como sigue:
05
06
Enable Set/Reset
07 1 1 1 1

08

210
VIDEO
Acceso a los bit planes EGA /VGA
Controlador gráfico:
Puertos 3CE y 3CF (Nº de registro-valor)

Nº registro Æ Nombre Bit Mask


00
01
02
03
Máscara de bits. Indica que bits
04 Pueden ser modificados y cuales
05 quedarán inalterados.
06 1 = Puede ser modificado
07 0 = Enmascarado (Inalterable)
08 Bit Mask

211
VIDEO
Acceso a los bit planes EGA /VGA
Se encuentra en el registro Secuencer

Map Mask

Máscara de planos. Indica que planos


Pueden ser modificados y cuales
quedarán inalterados.
1 = Puede ser modificado
0 = Enmascarado (Inalterable)

212
VIDEO
Acceso a los bit planes EGA /VGA
Es el registro nº 3 del Controlador Gráfico

Function Select: Permite seleccionar la


operación a efectuar entre los latchs y
otro operando que depende del modo
de escritura.
7 6 5 4 3 2 1 0

00 = Sustituir
01 = AND
10 = OR
11 = XOR

213
Acceso a los bit planes
VIDEO EGA /VGA
Escritura 0
1) El µP efectúa una lectura en (Por Ejemplo)
la dirección A000H:3CF2H. Como
consecuencia el contenido de la dirección
3CF2H de los cuatro planos se carga en los
cuatro Latchs.
2) Se efectúa una operación algebraica entre
los bits no enmascarados de los cuatro
Latchs y un operando.
3) El µP efectúa una escritura en (Por
Ejemplo) la dirección A000H:9FF4H. Como
consecuencia el contenido de los cuatro
Latchs se carga en la dirección 9FF4H de los
cuatro planos
214
Acceso a los bit planes
VIDEO EGA /VGA
Escritura 0
El operando puede ser:
a) Los cuatro bits menos significativos del
registro Set / Reset. Para ello el registro
Enable Set / Reset debe contener XXXX1111.
Tendremos un bit por plano (por cada Latch)

b) Los ocho bits del byte que envía el µP a la


memoria en la operación de escritura. Este
caso ocurrirá si el registro Enable Set /
Reset contiene XXXX0000.
Tendremos un bit por columna

215
VIDEO EGA /VGA
Escritura 0
Primer caso: El operando etá formado por los cuatro 64Kb
bits menos significativos del registro SET/RESET.
64Kb
El registro Set/Reset está habilitado.
Tendremos un bit operando por plano
3 64 Kb
64 Kb

9FF4
9FF4
9FF4
7 6 5 4 3 2 1 0 9FF4
x x x x x x x x Byte enviado por el µP
7 6 5 4 3 2 1 0

OR 1 0 Function Select

7 6 5 4 3
1
2
1
1
1
0
1
Enable
Set / Reset
1
7 6 5 4 3 2 1 0

2 7 6 5 4 3
0
2
1
1
0
0
1 Set / Reset
1 1 0 1 Map Mask 3CF2
3CF2
3 1 1 0 0 1 1 0 1 3CF2
3 1 1 0 0 1 1 0 1
2 1 0 0 0 0 1 1 1 3CF2
2 1 1 0 1 0 1 1 1

1 0 0 1 1 0 0 0 0 OR con 0101 1 0 0 1 1 0 0 0 0

0 0 0 1 0 1 1 1 0 0 3
1 1 0 1 1 1 0 1
de los bits no 2
enmascarados 1
1 1 0 1 0 1 0 1 Bit Mask 0
216
VIDEO EGA /VGA
Escritura 0
Segundo caso: El operando etá formado por los ocho 64Kb
bits del byte enviado por el µP en la operación de
64Kb
escritura.
El registro Set/Reset está deshabilitado.
Tendremos un bit operando por columna 3 64 Kb
64 Kb

9FF4
9FF4
9FF4
7 6 5 4 3 2 1 0 9FF4
0 1 1 1 0 1 0 0 Byte enviado por el µP
7 6 5 4 3 2 1 0

AND 0 1 Function Select

7 6 5 4 3
0
2
0
1
0
0
0
Enable
Set / Reset
1
7 6 5 4 3 2 1 0

2 7 6 5 4 3
x
2
x
1
x
0
x Set / Reset
1 1 0 1 Map Mask 3CF2
3CF2
3 1 1 0 0 1 1 0 1 3CF2
3 0 1 0 0 1 1 0 0
2 1 0 0 0 0 1 1 1 3CF2
2 0 1 0 1 0 1 1 0

1 0 0 1 1 0 0 0 0 AND con 01110100 1 0 0 1 1 0 0 0 0

0 0 1 0 1 1 1 0 0
0 0 1 0 1 1 1 0 0 3
de los bits no 2
enmascarados 1
0
1 1 0 1 0 1 0 1 Bit Mask
217
VIDEO EGA /VGA
Escritura 1
Es el modo de escritura mas simple. 64Kb
a) El µP efectúa una operación de lectura en (P. Ej.) la
64Kb
dirección A3CF2H. La consecuencia es que el contenido de la
dirección 3CF2 de los cuatro planos se carga en los cuatro Latchs. 64 Kb
b) El µP efectúa una operación de escritura en (P. Ej.) la 64 Kb
dirección A9FF4H. El contenido de los cuatro Latchs se escribe en las
posiciones 9FF4H de los cuatro planos.

2 9FF4
9FF4
9FF4
9FF4

Fundamentalmente este
3CF2
modo de escritura traslada
el contenido de memoria de 3 1 1 0 0 1 1 0 1
1 3CF2
3CF2
una posición a otra 2 1 0 0 0 0 1 1 1 3CF2
1 0 0 1 1 0 0 0 0

0 0 1 0 1 1 1 0 0 3
2
1
0
218
VIDEO EGA /VGA
Escritura 2
64Kb
El operando ahora lo constituyen los cuatro bits
64Kb
menos significativos del byte enviado por el µP en la
operación de escritura.
3 64 Kb
64 Kb

9FF4
9FF4
9FF4
7 6 5 4 3 2 1 0 9FF4
x x x x 0 1 1 1 Byte enviado por el µP
7 6 5 4 3 2 1 0

XOR 1 1 Function Select

1
6 5 4 3 2 1 0
1 1 0 1 Map Mask
2 3CF2
3CF2
3CF2
3 1 1 0 0 1 1 0 1
3 1 1 0 0 1 1 0 1

2 1 0 0 0 0 1 1 1 3CF2
2 0 1 0 1 0 0 1 0

1 0 0 1 1 0 0 0 0 XOR con 0111 1 0 0 1 1 0 0 0 0

0 0 0 1 0 1 1 1 0 0 3
1 0 0 0 1 0 0 1
de los bits no 2
enmascarados 1
1 1 0 1 0 1 0 1 Bit Mask 0
219
Escritura 3
VIDEO VGA
El operando ahora lo constituyen los cuatro bits
menos significativos del registro Set /Reset.
64Kb
La máscara de bits efectiva se obtiene mediante AND
entre el contenido del Bit Mask y el byte enviado por el 64Kb
µP
3 64 Kb
64 Kb

9FF4
9FF4
9FF4
7 6 5 4 3 2 1 0 9FF4
sustituir 0 0 Function Select
7 6 5 4 3 2 1
1 0
7 6 5 4 3 2 1 0 Enable 0 1 1 1 0 1 0 0 Byte enviado por el µP
x x x x Set / Reset AND
1 1 0 1 0 1 0 1 Bit Mask
7 6 5 4 3 2 1 0

2 0 0 1 1 Set / Reset
0 1 0 1 0 1 0 0 3CF2
3CF2
3 1 1 0 0 1 1 0 1 3CF2
3 1 0 0 0 1 0 0 1
sustituir con 0011 2 1 0 0 0 0 1 1 1 3CF2
2 1 0 0 0 0 0 1 1
1 0 0 1 1 0 0 0 0
1 0 0 1 1 0 0 0 0
los bits no 0 0 1 0 1 1 1 0 0 3
0 0 1 0 1 1 1 0 0
enmascarados 2
1
7 6 5 4 3 2 1 0 0
1 1 0 1 Map Mask
220
VIDEO
Modos de texto en EGA / VGA
Modo 3 en el ejemplo

RAM de VIDEO
64Kb
64Kb 64Kb
64 Kb
C0 C1 C2 C3 C78 C79 64 Kb
C78 C79 Plano 2
Plano 1 Plano 0

Atributo3 B8007H
Carácter3 B8006H
Atributo2 B8005H
Carácter2 B8004H
Atributo1 B8003H Atributo3
Carácter1 B8002H Atributo2 Carácter3
Atributo0 B8001H Atributo1 Carácter2
Carácter0 B8000H Atributo0 Carácter1
Carácter0

Tablas de caracteres en el plano 2 221


VIDEO
Modos de texto en EGA / VGA

EGA VGA
Plano 2 Plano 2

8 Kbytes Libre 8 Kbytes Tabla 7=256 caracteres

Tabla 1 = 256 caracteres 8 Kbytes Tabla 1 = 256 caracteres


8 Kbytes

8 Kbytes Libre 8 Kbytes Tabla 6=256 caracteres

8 Kbytes Tabla 0 = 256 caracteres 8 Kbytes Tabla 0 = 256 caracteres

8 Kbytes Libre 8 Kbytes Tabla 5=256 caracteres

Tabla 1 = 256 caracteres 8 Kbytes Tabla 1 = 256 caracteres


8 Kbytes

8 Kbytes Libre 8 Kbytes Tabla 4=256 caracteres

8 Kbytes Tabla 0 = 256 caracteres 8 Kbytes Tabla 0 = 256 caracteres

Tablas de caracteres en el plano 2


222

S-ar putea să vă placă și