Documente Academic
Documente Profesional
Documente Cultură
POLITECNICA
DEL
EJERCITO
INTRODUCCIÓN
– Arquitectura
de
3
Buses.
– Introducción
al
80x86.
ARQUITECTURA
DE
TRES
BUSES
DE
VON
NEWMANN
ARQUITECTURA
DE
TRES
BUSES
DE
VON
NEWMANN
• Unidad aritmética lógica (ALU): responsable de llevar a cabo las
operaciones lógicas y aritméticas.
Predicado: Información
la televisión Bus de Datos complementaria
BUS
DE
DATOS
• Bidireccional.
• Transporta información que
se
está
procesando
o
las
instrucciones
del
programa
que
se
ejecuta.
Hay
que
recordar
que
en
la
arquitectura
Von
Newmann
el
programa
está
guardado
en
el
interior
del
sistema
informáDco
codificado
como
información
• Tipos: Interno y Externo.
• El
ancho
en
bits
del
bus
de
datos
define
el
tamaño
de
la
palabra
del
sistema
informáDco. Mientras mayor sea el Bus de Datos mayor es
la capacidad de transferencia.
BUS
DE
DIRECCIONES
• El
bus
de
direcciones
se
uDliza
para
indicar
el
origen
y/o
el
desDno
de
los
datos.
• Trabaja con el PC.
• En
el
bus
de
direcciones
se
indica
la
posición
de
memoria
a
la
que
se
está
accediendo
en
cada
momento.
Puede
tratarse
de
una
dirección
de
la
memoria
principal
o
puede
tratarse
de
una
dirección
de
memoria
en
la
que
está
mapeado
un
periférico.
• El
ancho
en
bits
del
bus
de
direcciones
determina
el
tamaño
del
espacio
de
memoria
direccionable.
BUS
DE
CONTROL
• El
bus
de
control
proporciona
señales
para
coordinar
las
diferentes
tareas
que
se
realizan
en
el
sistema
informáDco.
• Algunas
de
las
señales
que
podemos
encontrar:
– CLK:
Frecuencia
de
reloj
– CS
(Chip
select):
AcDva
el
chip
a
uDlizar
– READY:
Está
disponible
el
disposiDvo
?
– R/W:
Se
trata
de
una
operación
de
lectura
o
escritura
?
MEMORIAS
PASIVAS
• Memorias
totalmente
pasivas
(ROM)
Son
aquellas
que
sólo
pueden
ser
leídas
por
el
usuario.
La
grabación
o
escritura
la
realiza
el
fabricante.
Esta
memoria
es
ideal
para
almacenar
las
ruDnas
básicas
a
nivel
de
hardware,
por
ejemplo,
el
programa
de
inicialización
de
arranque
de
un
sistema.
Tipo
de
datos
(bits) 8 8 8,
16 8,
16 8,
16 8,
16,
32 8,
16,
32
80X86
• Ofrece
un
mejor
costo
de
implementación.
• Mejor
desempeño
y
mayor
espacio
de
direccionamiento.
• En
1980
IBM
comienza
con
el
desarrollo
de
su
propia
computadora
personal.
– Arquitectura
abierta
para
que
otras
empresas
pudiesen
hacer
sus
modelos
compaDbles
con
los
de
IBM.
– Optaron
por
el
microprocesador
de
Intel
8088
de
16bits,
a
4.77MHz
con
16K
de
RAM
ampliable
a
256K
gracias
a
sus
5
ranuras
de
expansión
• Ser
la
única
elección
en
relación
a
las
implementaciones
de
la
competencia,
(
la
IBM
quería
ser
la
líder
del
mercado).
ARQUITECTURA DEL
8086/8088
ARQUITECTURA
EN
PIPELINE
Fetch
3
Exec
3
DIAGRAMA
DE
BLOQUES
INTERNO
DEL
8088/86
AH
AL
CS
BH
BL
ES
CH
CL
SS
DH
DL
BP
IP
DI
SI
SP
ADDRESS
GENERATION
AND
BUS
CONTROL
OPERANDS
INSTRUCTION
ALU
QUEUE
FLAGS
• La
EU
Dene
una
unidad
aritméDca
lógica
(ALU)
de
16
bits,
un
registro
de
banderas
y
un
conjunto
de
registros
de
propósito
general.
El
registro
de
banderas
conDene
6
banderas
de
estado
(que
la
EU
manipula
para
indicar
el
estado
del
resultado
de
una
operación
lógica
o
aritméDca)
y
3
banderas
de
control
que
se
pueden
manipular
por
los
programas
para
alterar
las
operaciones
del
procesador
.
UNIDAD
DE
INTERFASE
CON
EL
BUS
(BIU)
AX,
BX,
CX,
DX:
pueden
uDlizarse
bien
como
registros
de
16
bits
o
como
dos
registros
separados
de
8
bits
(byte
superior
e
inferior)
cambiando
la
X
por
H
o
L
según
queramos
referirnos
a
la
parte
alta
o
baja
respecDvamente.
Por
ejemplo,
AX
se
descompone
en
AH
(parte
alta)
y
AL
(parte
baja).
Evidentemente,
cualquier
cambio
sobre
AH
o
AL
altera
AX.y
AX
=
Acumulador
Primario.
• Todas
las
operaciones
de
I/O
son
realizadas
con
el
apoyo
de
este
registrador.
• Operaciones
que
uDlizan
datos
inmediatos
necesitan
de
menos
memoria
cuando
son
hechas
a
través
de
AX.
• Algunas
operaciones
con
strings
e
instrucciones
aritméDcas
piden
el
uso
de
este
registrador.
• Generalmente,
es
usado,
por
los
compiladores,
para
guardar
valores
retornados
de
subruDnas.
REGISTROS DE DATOS O DE PROPÓSITO
GENERAL
BX
=
Base.
• Es
el
único
registro
de
propósito
general
que
puede
ser
uDlizado
en
el
cálculo
de
direccionamiento
de
memoria.
• Todas
las
referencias
a
la
memoria
que
usa
este
registro
en
el
cálculo
de
direccionamiento
toman
el
registro
de
segmento
DS
como
segmento
padrón.
De
esta
manera,
no
es
preciso
indicar
una
posición
de
memoria
fija,
sino
la
número
BX.
CX
=
Contador.
• Es
decrementado
durante
las
operaciones
con
loops
y
strings.
• Es
usado
para
controlar
el
número
de
repeDciones
de
una
instrucción
antecedida
por
el
prefijo
REP.
• Es
usado
para
controlar
rotaciones
y
desplazamientos
de
varios
bits.
REGISTROS DE DATOS O DE PROPÓSITO
GENERAL
• Puede
ser
usado
por
compiladores,
juntamente
con
AX,
para
guardar
valores
retornados
de
subruDnas.
REGISTROS DE DATOS O DE PROPÓSITO
GENERAL
SS
=
Registro
de
segmento
de
pila
(stack
segment).
Todos
los
accesos
a
datos
que
uDlizan
los
registros
SP
o
BP
toman
como
referencia
este
registro.
ES
=
Registro
de
segmento
extra
(extra
segment).
Operaciones
con
strings
que
usan
DI
para
calcular
el
direccionamiento
son
hechas
usando
el
registro
ES
para
definir
el
segmento.
Es
extraordinariamente
úDl
actuando
en
conjunción
con
DS:
con
ambos
se
puede
definir
dos
zonas
de
64
Kb,
tan
alejadas
como
se
desee
en
el
espacio
de
direcciones,
entre
las
que
se
pueden
intercambiar
datos.
REGISTROS
DE
SEGMENTO
CS
=
Registro
de
segmento
de
código
(code
segment).
• ConDene
la
dirección
del
segmento
con
las
instrucciones
del
programa.
Los
programas
de
más
de
64
Kb
requieren
cambiar
CS
periódicamente.
• Todos
los
acessos
al
código
de
programa
toman
este
registro
como
selector.
El
“offset”
es
el
registro
IP.
DS
–
Segmento
de
Datos
(“Data
Segment”)
• Todo
acesso
a
datos
usa
este
registro
como
referencia,
pero
hay
3
excepciones:
• Direcciones
para
acceso
a
una
pila
que
usan
el
registro
SS.
• Direcciones
para
acceso
a
datos
que
usan
el
BP
y
son
calculados
a
parDr
de
SS.
• Operaciones
con
strings,
que
usan
DI
en
el
cálculo
de
la
dirección,
son
hechas
usando
ES.
REGISTROS
PUNTEROS
DE
PILA
• Una
pila
es
parDcularmente
importante
en
lo
que
se
refiere
al
uso
de
subruDnas.
Cuando
una
instrucción
llama
a
una
subruDna,
es
preciso
marcar
cual
instrucción
del
programa
debe
ser
ejecutada
luego
de
terminar
la
subruDna.
• Otra
aplicación
para
una
pila
es
la
posibilidad
de
la
ubicación
dinámica
de
variables.
Las
variables
ubicadas
en
la
pila
son
accesadas
con
el
auxilio
de
BP.
REGISTROS
PUNTEROS
DE
PILA
SP
=
Puntero
de
pila
(stack
pointer).
• Apunta
al
inicio
de
la
pila.
UDlizado
en
las
instrucciones
de
manejo
de
la
pila.
• Almacena
el
offset
del
direccionamiento
del
tope
de
la
pila,
controlando
la
localización
dinámica
de
variables
y
el
apilamiento
de
direcciones
de
retorno
de
subruDnas.
• Todas
las
referencias
al
SP,
por
definición,
usan
el
registro
SS.
BP
=
Puntero
base
(base
pointer).
• Es
un
puntero
de
base,
que
permite
accesar
datos
localizados
en
la
pila,
dedicada
al
almacenamiento
de
datos
(variables
locales
y
parámetros
de
las
funciones
en
los
programas
compilados).
• Permite
accesar
a
parámetros
que
fueron
pasados
por
la
pila
para
una
determinada
subruDna.
PUNTERO
DE
INSTRUCCIONES
O
CONTADOR
DE
PROGRAMA
• IP=
Puntero
de
instrucción
(instrucJon
pointer)
(IP):
• Marca
el
desplazamiento
de
la
instrucción
en
curso
dentro
del
segmento
de
código.
Es
automáDcamente
modificado
con
la
lectura
de
una
instrucción.
•
El
puntero
de
instrucción
(IP)
y
el
registro
CS,
juntos,
son
responsables
por
marcar
la
dirección
de
la
próxima
instrucción
a
ser
ejecutada.
REGISTROS
ÍNDICES
• Son usados para accesar datos en la memoria de datos.
• Son usados en las operaciones con strings.
• Pueden ser usados como operandos en las operaciones lógicas y aritméticas
de 16 bits.
• R,
reservado
• U,
indefinido
• OF
(overflow
flag),
se
setea
cuando
existe
un
desbordamiento
del
bit
de
signo.
• DF
(direcDon
flag),
se
usa
para
controlar
la
dirección
de
operaciones
con
caracteres.
• IF
(interrupt
flag),
se
setea
cuando
se
solicita
una
interrupción.
• TF
(trap
flag),
es
igual
a
uno
si
se
ejecuta
una
instrucción
a
la
vez.
• SF
(sign
flag),
almacena
el
bit
más
significaDvo
del
acumulador.
• ZF
(zero
flag),
si
una
operación
aritméDca
o
lógica
es
cero,
ZF=1
• AF
(auxiliary
carry
flag),
si
existe
acarreo
de
b3
al
b4
en
una
operación,
AF=1.
Es
usado
en
operaciones
BCD
• PF
(parity
flag),
verifica
paridad
par
en
una
operación.
• CF
(carry
flag),
bit
de
acarreo
del
b7
en
una
operación
de
8
bits,
y
de
b15
en
una
operación
de
16
bits.
Bit
Indicador
de:
Uso
IF
Este
bit
controla
el
estado
del
sistema
de
Interrupción
("Interrupt
Flag")
interrupciones
enmascarables
.
Cuando
está
acDvo
(1)
permite
las
interrupciones;
el
estado
inacDvo
(0)
las
deshabilita.
DF
Dirección
("DirecDon
Flag")
Determina
si
las
operaciones
con
strings
van
a
DF
Dirección
("DirecDon
Flag")
incrementar
o
decrementar
los
registros
de
indexación
SI
y
DI
OF
Desbordamiento
(Overflow
Flag")
Señala
desbordamiento
aritméDco
Bit
Indicador
de:
Indica^vo
si
bit
1
Indica^vo
si
bit
0
PF Paridad PE ("Parity Even") paridad par PO ("Parity Odd") paridad impar
FFFFF
Dirección lógica
Dirección física
SEGMENTO Registro de segmento
Desplaz
amiento
Dirección de segmento
CPU
Memoria
FORMACIÓN
DE
UNA
DIRECCIÓN
FÍSICA
Siempre
que
una
memoria
es
accesada,
se
genera
una
dirección
lsica
a
parDr
de
la
dirección
lógica.
Dirección
efectiva,
lógica u
offset EL REGISTRO DE
4 bits SEGMENTO SE
Dirección de DESPLAZA 4 BITS
segmento HACIA LA
IZQUIERDA
(MULTIPLICACIÓN
x16)
20 BITS
FORMACIÓN DE UNA DIRECCIÓN
FÍSICA
FORMACIÓN
DE
UNA
DIRECCIÓN
FÍSICA
Por
Ejemplo:
Si
la
dirección
base
del
segmento
es
2915h,
entonces
las
direcciones
en
este
segmento
inician
en
2915:0000
y
van
hasta
2915:FFFF
SEGMENTO
DE
MEMORIA
FFFFF
Memoria
SEGMENTOS
DE
MEMORIA
• El
segmento
de
código
(Dene
como
base
el
contenido
del
registro
CS).
•
En
este
segmento
se
encuentran
las
instrucciones
que
forman
el
programa.
Para
acceder
a
los
datos
contenidos
en
él,
se
usa
el
registro
IP
como
desplazamiento.
• El
segmento
de
datos
(que
Dene
como
base
el
registro
DS).
• ConDene
los
datos
que
uDliza
el
programa
(variables,
etc.)
Para
acceder
a
los
datos
contenidos
en
él,
se
suele
uDlizar
los
registros
SI
y
DI
como
desplazamiento.
SEGMENTOS
DE
MEMORIA
El
segmento
de
pila
(con
SS
como
base).
-‐ En
él
se
desarrolla
la
pila
del
programa,
uDlizada
para
almacenar
temporalmente
datos,
llamadas
a
funciones,
etc.
Debe
estar
presente
en
todos
los
programas
EXE
de
forma
obligada.
Se
uDliza
el
registro
SP
para
acceder
a
los
datos
de
este
segmento.
CS CS
SEGMENTO DE PROGRAMA
CÓDIGO SEGMENTO DE
CÓDIGO
DS
SEGMENTO DE
DATOS
OTRO SEGMENTO
ES
SEGMENTO EXTRA
DE DATOS
SS
STACK
MEMORIA
MEMORIA
SEGMENTACIÓN
Relocalización de un programa usando el registro CS
02000
600
PROGRAMA
SEGMENTO DE
CÓDIGO EN CURSO
PROGRAMA
SEGMENTO DE
CÓDIGO
RELOCALIZADO
MEMORIA
DIRECCIÓN
FÍSICA
Y
DIRECCIÓN
LÓGICA
• Cada
localidad
de
memoria
Dene
dos
Dpos
de
direcciones:
Dirección
Física
y
Dirección
Lógica
o
efecEva
• Una
dirección
Física
es
el
valor
único
de
20
bits
que
idenDfica
la
localización
de
cada
byte
en
el
espacio
de
memoria
de
1
Mbyte.
• Los
programas
tratan
con
dirección
Lógicas
mas
que
con
la
dirección
Física.
• Para
cualquier
localidad
de
memoria,
el
valor
base
del
segmento
ubica
el
primer
byte
del
contenido
del
segmento
y
el
valor
del
offset
es
la
distancia,
en
bytes
,
de
la
localización
desDno
del
principio
del
segmento.
SEGMENTO
DE
DATOS
• Para
facilitar
el
manejo
de
datos
el
8086
Dene
asignada
un
área
de
memoria
específica
que
se
llama
DS.
• Dirección
Lógica:
el
segmento
de
datos
Dene
como
offset
los
registros
BX,
SI
y
DI.
• Ejemplo:
si
DI=0200
y
se
desea
almacenar
los
datos
25H,
12H
y
25FFH;
los
datos
se
almacenan
en
las
siguientes
localidades
de
memoria:
DS:0200=25H
DS:0201=12H
DS:0202=FFH
DS:0203=25H
SEGMENTO
DE
PILA
• Es una sección para leer y/ l Ejemplo:
si
SP=1236,
AX=24B6,
BX=85C2,
o escribir en la RAM. DX=5F93.
Muestre
el
contenido
de
la
pila
con
las
siguientes
instrucciones.
• La pila es de tipo LIFO,
PUSH
AX
último en entrar, primero
PUSH
BX
en salir.
PUSH
DX
• Los dos registros utilizados
para manejar el SS son: SP SS:1230 93
y BP. SS:1231 5F
es POP. SS:1235 24 24 24
SS:1236