Actualizado el 21 de Marzo del 2018 (Publicado el 3 de Enero del 2018)
792 visualizaciones desde el 3 de Enero del 2018
181,8 KB
24 paginas
Creado hace 9a (05/10/2014)
Arquitectura software x86-16bits
Índice
1. Organización interna
2. Segmentación de memoria
3. Modos de direccionamiento
4. Formato de instrucciones
1/47
Arquitectura software x86-16bits
¿Qué es arquitectura software?
(cid:127) Es el conjunto de atributos que ve el programador
…o que ve el compilador, como generador
automático de código
(cid:127) Es el “contrato” entre en fabricante del procesador y
el programador
(cid:127) No requiere correspondencia real con la capa física
(cid:127) La arquitectura software x86-16bits data de 1978
Típico repertorio CISC
2/47
1
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
Arquitectura software x86-16bits
1. Organización interna
15
0
PROPÓSITO GENERAL
Acumulador
AH
AX
AL
Base
Contador
Datos
Puntero base
Índice fuente
Índice destino
Puntero de pila
BH
CH
DH
BL
CL
DL
BX
CX
DX
BP
SI
DI
SP
Producto, división, E/S y transferencias
optimizadas
Puntero a dirección base (datos)
Contador de bucles, desplazamientos,
rotaciones y repetición de cadenas
Producto, división y E/S
Puntero a dirección base (pila)
Fuente en manejo de cadenas
Destino en manejo de cadenas
Puntero a la cima de la pila
3/47
Arquitectura software x86-16bits
1. Organización interna
Registros de propósito general:
(cid:127) Almacenamiento temporal de datos
(cid:127) Algunos se acceden como palabra (16 bits) o como byte
Registro X
Registro L y H
(cid:127) Usos dedicados y limitaciones
(cid:127) Modelo híbrido (acumulador y banco de registros)
Heredado de arquitecturas anteriores
4/47
2
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
Arquitectura software x86-16bits
1. Organización interna
15
0
REGISTROS DE SEGMENTO
Segmento de
código
Segmento de
datos
Segmento de
pila
Segmento
extra (datos)
CS
DS
SS
ES
(cid:127) Los programas manejan
diferentes áreas de
memoria:
Código (texto)
Datos
Pila
Heap
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
(cid:127) Estos registros apuntan a
dichas áreas de memoria
5/47
Arquitectura software x86-16bits
1. Organización interna
Registros de segmento:
(cid:127) Todas las direcciones son relativas a alguno de los
registros de segmento (por defecto)
• CS: la memoria de este segmento contiene instrucciones
DS: datos declarados por el programa
SS: es la pila
ES: datos extra; datos de cadenas
6/47
3
(cid:127)
(cid:127)
(cid:127)
Arquitectura software x86-16bits
1. Organización interna
15
0
OTROS REGISTROS
Estado
Puntero de
instrucción
Flags
IP
7/47
Arquitectura software x86-16bits
1. Organización interna
15
desbordamiento
O
D
I
T
S
Z
A
P
0
C
dirección
interrupción
trap (paso a paso)
signo
cero
acarreo auxiliar
REGISTRO DE ESTADO
paridad
acarreo
8/47
4
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
Arquitectura software x86-16bits
1. Organización interna
(cid:127) Acarreo:
Es 1 si el resultado de una operación genera acarreo
(cid:127) Paridad:
Es 1 si el resultado contiene un número par de bits a 1
(cid:127) Acarreo auxiliar:
Es 1 si el resultado genera un acarreo en los 4 bits de
menor peso. Se usa en aritmética BCD
(cid:127) Cero:
Es 1 si el resultado es cero
(cid:127) Signo:
Copia el bit de mayor peso del resultado
(independientemente de la interpretación del resultado)
9/47
Arquitectura software x86-16bits
1. Organización interna
(cid:127) Trap:
Si es 1 el procesador genera una interrupción de paso a
paso después de ejecutar cada instrucción
(cid:127)
Interrupción:
Si es 1 las interrupciones serán reconocidas
(cid:127) Dirección:
Si es 1 las operaciones con cadenas se realizan de las
posiciones altas a las bajas
10/47
5
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
Arquitectura software x86-16bits
1. Organización interna
(cid:127) Desbordamiento:
Es 1 si el resultado es demasiado grande (o pequeño)
para los límites de representación con signo (en C-2)
OF
=
c
n
− ⊕
1
c
−
n
2
11/47
Arquitectura software x86-16bits
1. Organización interna
(cid:127) Flags de estado
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
Acarreo, paridad, acarreo auxiliar, cero, signo y
desbordamiento
Describen el resultado
Se aplican a operaciones de tamaño byte (n=8) –ya sea
la parte alta o la baja– o palabra (n=16)
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
Proporcionan códigos de condición por separado o en
conjunto
(cid:127) Flags de control
Trap, interrupción y dirección
Afectan al modo de funcionamiento del procesador
12/47
6
Arquitectura software x86-16bits
1. Organización interna
13/47
Arquitectura software x86-16bits
2. Segmentación de memoria
(cid:127) El mapa de memoria que “ve” el x86-16bits NO es “plano”
(cid:127) Los registros de 16 bits sólo pueden direccionar
216 posiciones de memoria (65.635 posiciones = 64K)
(cid:127) ¿Cómo alcanzar un espacio de direcciones mayor?
(cid:127) El acceso a memoria se realiza en segmentos de 64K
14/47
7
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
Arquitectura software x86-16bits
2. Segmentación de memoria
(cid:127) La memoria está organizada en bytes (B)
(cid:127) La capacidad de direccionamiento es de 1MB (220 B)
(cid:127) La dirección completa se consigue mediante la
combinación de dos punteros: base y desplazamiento
(offset):
base:desplazamiento
(cid:127) La dirección física se calcula:
base x 16 + desplazamiento
15/47
Arquitectura software x86-16bits
2. Segmentación de memoria
Ejemplos:
(cid:127) La dirección 53C2:107A es:
53C20 h
+107A h
54C9A h
x16 (x10 h)
dirección física
(cid:127) La dirección B100:046C es:
B1000 h
+046C h
B146C h
x16 (x10 h)
dirección física
16/47
8
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
Arquitectura software x86-16bits
2. Segmentación de memoria
(cid:127) La misma dirección física puede ser accedida con
diferentes combinaciones base:desplazamiento
Ejemplo:
(cid:127) La dirección física 7A26B h puede ser:
7A26:000B
7A00:026B
751C:50AB
(cid:127) Problemas de seguridad
(cid:127) La base (segmento) apunta a párrafos (de 16 posiciones)
17/47
Arquitectura software x86-16bits
2. Segmentación de memoria
(cid:127) En ensamblador no se representan las direcciones
como base:desplazamiento aunque si lo admiten los
depuradores
(cid:127) Los desplazamientos llevan asociada una base por
defecto
(cid:127) Cuando es necesario especificar la base se hace de
manera simbólica (usando el nombre del registro de
segmento como prefijo de la instrucción)
18/47
9
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
base
offset
IP
SP
BP
BX
SI
DI
CS
sí
no
prefijo
prefijo
prefijo
prefijo
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
Arquitectura software x86-16bits
2. Segmentación de memoria
SS
no
sí
DS
no
no
por defecto
prefijo
ES
no
no
prefijo
prefijo
prefijo
por defecto
por defecto
prefijo
prefijo
prefijo
por defecto
por defecto
19/47
Arquitectura software x86-16bits
2. Segmentación de memoria
(cid:127) Las direcciones pueden ser:
Near
Far
(cid:127) Near : sólo el desplazamiento; la base toma el valor
en curso de la dada por defecto
(cid:127) Far : se requiere la especificación de la base y del
desplazamiento
20/47
10
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
Arquitectura software x86-16bits
2. Segmentación de memoria
21/47
Arquitectura software x86-16bits
2. Segmentación de memoria
22/47
11
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
Arquitectura software x86-16bits
3. Modos de direccionamiento
(cid:127) Determinan la ubicación de los operandos
(cid:127) Tres posibles ubicaciones:
Inmediatos (en la propia instrucción)
En registros
En memoria
(Implícitos) no se identifican, son sobreentendidos
23/47
Arquitectura software x86-16bits
3. Modos de direccionamiento
(cid:127) Momento en el que se actualiza el modo de
direccionamiento:
Inmediatos tiempo de ensamblado
En registros tiempo de programación o compilación
En memoria
(cid:127) Absolutos tiempo de carga
(cid:127) Relativos tiempo de ejecución
interviene el SO
24/47
12
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
Arquitectura software x86-16bits
3. Modos de direccionamiento
(cid:127) Clasificación de estructura de computadores:
inmediato
directo
indirecto
implícito
absoluto
relativo
a registro
a memoria
a página base
a registro
base + desplazamiento
base + índice + desplazamiento
contador de programa
puntero de pila
25/47
Arquitectura software x86-16bits
3. Modos de direccionamiento
3.1. Inmediato
Ejemplo: MOV AL,15h
DIRECCIÓN
MEMORIA INSTRUCCIÓN
DIRECCIÓN
MEMORIA INSTRUCCIÓN
8088/86
0000
0100
XX
IP
CS
DS
SS
ES
AX
BX
CX
DX
SP
BP
SI
DI
01000
01001
01002
01003
80
15
XX
MOV AL,15h
siguiente instrucción
8088/86
0002
0100
15
IP
CS
DS
SS
ES
AX
BX
CX
DX
SP
BP
SI
DI
01000
01001
01002
01003
80
15
XX
MOV AL,15h
siguiente instrucción
Antes de ejecutar la instrucción
Después de ejecutar la instrucción
26/47
13
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
z
e
p
ó
L
o
c
R
i
l
f
e
a
a
R
©
Arquitectura software x86-16bits
3. Modos de direccionamiento
3.2. Directo absoluto a registro
Ejemplo: MOV AX,BX
DIRECCIÓN
MEMORIA INSTRUCCIÓN
DIRECCIÓN
MEMORIA INSTRUCCIÓN
8088/86
0000
0100
XXXX
7FA6
IP
CS
DS
SS
ES
AX
BX
CX
DX
SP
BP
SI
DI
01000
01001
01002
01003
8B
C3
XX
MOV AX,BX
siguiente instrucción
8088/86
0002
0100
7FA6
7FA6
IP
CS
DS
SS
ES
AX
BX
CX
DX
SP
BP
SI
DI
01000
01001
01002
01003
8B
C3
XX
MOV AX,BX
siguiente instrucción
Antes de ejecutar la instrucción
Después de ejecutar la instrucción
27/47
Arqu
Comentarios de: Arquitectura software x86-16bits (0)
No hay comentarios