Vous êtes sur la page 1sur 36

Universidad Nacional del Altiplano

E. P. Ingeniera de Sistemas

Tema : Arquitectura PC
Computacin y Programacin
de Bajo Nivel
Componentes Bsicos
CPU
Memoria
Unidad Aritmtica / Lgica
Unidad de Entrada y Salida
Unidad de Control
Procesador

Computacin y Programacin de Bajo Nivel 2


Unidad Central de Procesamiento
La Unidad Central de Procesamiento (CPU) es el
dispositivo fsico que ejecuta las instrucciones.
Las instrucciones que ejecuta la CPU son por lo
general muy simples. Las instrucciones pueden
requerir datos que estn en un lugar especial de
almacenamiento de la CPU en s misma llamados
registros.
La CPU puede acceder a los datos en los registros
mucho ms rpido que en la memoria. Sin
embargo el nmero de registros en la CPU es
limitado, as el programador debe tener cuidado de
dejar en los registros slo los datos que est
usando.

Computacin y Programacin de Bajo Nivel 3


Unidad Central de Procesamiento
Las instrucciones que un tipo de CPU ejecuta las
hace en lenguaje de mquina.
Los programas en lenguaje de mquina tienen una
estructura mucho ms bsica que los lenguajes de
alto nivel.
Las instrucciones en lenguaje de mquina son
codificadas como nmeros, no en formatos de
texto amigables.
Una CPU debe estar en capacidad de decodificar
una instruccin muy rpidamente para ejecutarse
eficientemente.

Computacin y Programacin de Bajo Nivel 4


Unidad Central de Procesamiento
Los programas escritos en otros lenguajes deben
ser convertidos en lenguaje de mquina nativo de
la CPU para que se ejecute en el computador.
Un compilador es un programa que traduce
programas escritos en un lenguaje de
programacin al lenguaje de mquina de una
arquitectura en particular de un computador.
En general cada tipo de CPU tiene su propio y
nico lenguaje de mquina. Esa es una de las
razones por las cuales programas escritos para un
Mac no corren en un PC tipo IBM.

Computacin y Programacin de Bajo Nivel 5


La Memoria
La unidad bsica de memoria es el byte. Cada byte
est etiquetado por un nmero nico conocido
como su direccin.
Los datos en la memoria son numricos. Los
caracteres son almacenados usando un cdigo de
caracteres que traduce un nmero en un carcter.
Uno de los cdigos de caracteres ms conocido es
el ASCII. Un nuevo cdigo, ms completo, que
est reemplazando al ASCII es el Unicode.

Computacin y Programacin de Bajo Nivel 6


La Memoria
La diferencia entre los dos cdigos es que el ASCII
usa un byte para un carcter, pero Unicode usa
dos bytes (o una palabra) por carcter. Por
ejemplo en ASCII el byte 4116 (6510) es la A
mayscula. Unicode lo representa con la palabra
004116.
ASCII usa un byte y est limitado a 256 caracteres
diferentes. Unicode ampla los valores ASCII a
palabras y permite que se representen muchos
ms caracteres. Esto es importante para
representar los caracteres de todas las lenguas del
mundo.

Computacin y Programacin de Bajo Nivel 7


La Unidad Aritmtica / Lgica
La unidad de aritmtica lgica (ALU) es la unidad
funcional que lleva a cabo las operaciones
aritmticas (suma, resta, multiplicacin, divisin y
cambio) y operaciones lgicas (and, or,
complemento) dentro de la computadora.
La ALU tiene las siguientes partes:
Unidad Funcional, efectan las operaciones (sumadora,
multiplicadora, complementadora).
Registros, contienen los operandos, resultados e
informacin de errores y condiciones de las operaciones
realizadas.

Computacin y Programacin de Bajo Nivel 8


La Unidad de Entrada y Salida
Una unidad de entrada-salida, llamada tambin
puerto, es un dispositivo empleado por la
computadora para recibir o enviar datos. Algunos
de estos dispositivos son: Teclado, ratn,
interruptores, impresora, monitor, discos
magnticos, tarjetas de comunicacin, etc.
Estos dispositivos al igual que las localidades de
memoria tienen direcciones nicas por medio de
las cuales el procesador interacta con ellos. Estas
direcciones se expresan generalmente en
hexadecimal.

Computacin y Programacin de Bajo Nivel 9


La Unidad de Entrada y Salida
Los dispositivos que registran informacin en
forma legible para la mquina, como codificacin
magntica, generalmente con el propsito de
almacenar informacin a largo plazo. Estos
dispositivos por lo general se llaman dispositivos de
almacenamiento en masa e incluyen discos, cintas y
casetes.
Los dispositivos que registran informacin de
manera que el hombre la entienda con facilidad:
alfabticos, esquemticos hablados. Al referirse a
estos dispositivos algunas veces se les llama
dispositivos de entrada y salida.

Computacin y Programacin de Bajo Nivel 10


La Unidad de Control
La funcin de la unidad de control es coordinar la
operacin de todas las otras unidades ofreciendo
seales de temporizacin para mantener el
sistema en sincronizacin adecuada y de control
para seleccionar si se desea leer o escribir a una
localidad de memoria o a un dispositivo de
entrada-salida.
La unidad de control y la unidad aritmtica/lgica
se consideran en conjunto como una unidad
funcional singular, el procesador.

Computacin y Programacin de Bajo Nivel 11


Familia de CPU 80x86
Las PC tienen una CPU de la familia Intel. Las CPU
de esta familia todas tienen algunas caractersticas
comunes incluyendo el lenguaje de mquina
bsico.
8888,8086. Estas CPU fueron usadas en las primeras
PC. Suministran varios registros de 16 bits: AX,
BX, CX, DX, SI, DI, BP, SP, CS, DS, SS, ES, IP,
FLAGS. Solo soportan hasta 1 Mb de memoria y
slo operan en modo real. En este modo un
programa puede acceder a cualquier direccin de
memoria, an a la memoria de otros programas!
Esto hace la depuracin y seguridad muy difcil.
Tambin la memoria del programa tiene que ser
dividida en segmentos. Cada segmento no puede
ser ms de 64 Kb.
Computacin y Programacin de Bajo Nivel 12
Familia de CPU 80x86
80286. Esta CPU se usa en los PC tipo AT. Agrega
unas instrucciones nuevas al lenguaje de mquina
base del 8088/86. Sin embargo la caracterstica
principal nueva es el modo protegido de 16 bits.
En este modo puede acceder hasta 16 Mb de
memoria y proteger a los programas del acceso de
otros. Sin embargo los programas todava estn
divididos en segmentos que no pueden ser ms de
64Kb.
AX
AH AL
Registro AX

Computacin y Programacin de Bajo Nivel 13


Familia de CPU 80x86
80386: Esta CPU es una gran ampliacin del 80286.
Primero extiende muchos de los registros para
almacenar 32 bits (EAX, EBX, ECX, EDX, ESI, EDI,
EBP, ESP, EIP) y aade dos nuevos registros de 16
bits FS y GS. Tambin aade un nuevo modo
protegido de 32 bits. En este modo pueden
acceder hasta 4 Gigabyes. Los programas otra vez
estn divididos en segmentos, pero ahora cada
segmento tambin puede tener hasta un tamao
de 4 Gigabytes.

Computacin y Programacin de Bajo Nivel 14


Familia de CPU 80x86
80486/Pentium/Pentium Pro: Estos miembros de la
familia 80x86 aaden muy pocas caractersticas
nuevas. Ellos principalmente aceleran la ejecucin
de las instrucciones.
Pentium MMX: Este procesador aade instrucciones
MMX (eXtensiones MultiMedia) al Pentium. Estas
instrucciones pueden acelerar instrucciones
comunes grficas.
Pentium II: Este es el procesador Pentium Pro con
las instrucciones MMX aadidas (El pentium III es
esencialmente slo un Pentium II rpido.

Computacin y Programacin de Bajo Nivel 15


Registros de 16 bits del 8086
La CPU original 8086 suministra 4 registros de 16
bits de propsito general AX, BX, CX y DX. Cada uno
de esos registros puede ser descompuesto en dos
registros de 8 bits. Por ejemplo el registro AX se
puede descomponer en los registros AL y AH.
El registro AH contiene los 8 bits superiores de AX y
AL contiene los 8 bits inferiores de AX.
A menudo AH y AL son usados como registros
independientes de 8 bits; sin embargo es importante
tener en cuenta que ellos no son independientes de
AX.
Cambiando el valor de AX cambiar AH y AL y
viceversa. Los registros de propsito general son
usados en muchos movimientos de datos e
instrucciones aritmticas.
Computacin y Programacin de Bajo Nivel 16
Registros de 16 bits del 8086
Hay dos registros de ndice de 16 bits SI y DI.
Ellos son a menudo usados como apuntadores,
pero pueden ser usados para muchos de los
propsitos de los registros generales. Sin
embargo, ellos no se pueden descomponer en
registros de 8 bits.
Los registros de 16 bits BP y SP son usados para
sealar a los datos en la pila y son llamados
Apuntador Base (Base Pointer) y apuntador a la pila
(Stack Pointer), respectivamente.

Computacin y Programacin de Bajo Nivel 17


Registros de 16 bits del 8086
Los registros de 16 bits CS, DS, SS y ES son
registros de segmento. Ellos especifican qu
memoria es usada por diferentes partes de un
programa. CS significa segmento de cdigo (Code
Segment), DS segmento de datos (Data Segment), SS
Segmento de la pila (Stack Segment) y ES segmento
adicional (Extra Segment). ES es usado como un
registro temporal.
El registro IP, Apuntador a la instruccin (Instruction
Pointer) es usado con el registro CS para obtener la
direccin de la siguiente instruccin a ser
ejecutada por la CPU. Normalmente cuando se
ejecuta una instruccin IP avanza hasta sealar a
la siguiente instruccin en memoria.

Computacin y Programacin de Bajo Nivel 18


Registros de 16 bits del 8086
El registro FLAGS almacena informacin
importante sobre los resultados de una instruccin
anterior. Estos resultados son almacenados como
bits individuales en el registro. Por ejemplo, el bit
Z es 1 si el resultado de la instruccin anterior fue
cero o 0 si el resultado no fue cero. No todas las
instrucciones modifican bits en FLAGS.

Computacin y Programacin de Bajo Nivel 19


Registros de 32 bits del 80386
El 80386 y los procesadores posteriores tienen
registros extendidos. Por ejemplo el registro de 16
bits AX se extendi para ser de 32 bits.
Para la compatibilidad con sus predecesores, AX se
refiere al registro de 16 bits y EAX se usa para
referirse al registro extendido de 32 bits.
AX son los 16 bits inferiores de EAX tal como AL
son los 8 bits inferiores de AX (y EAX).
No hay forma de acceder directamente a los 16
bits superiores de EAX.
Los otros registros extendidos son EBX, ECX, EDX,
ESI and EDI.

Computacin y Programacin de Bajo Nivel 20


Registros de 32 bits del 80386
Muchos de los otros registros se extienden
tambin. BP se convierte en EBP, SP se convierte
en ESP, FLAGS en EFLAGS e IP en EIP.
Sin embargo, son diferentes los registros de ndice
y los de propsito general, en el modo protegido
de 32 bits.
Los registros de segmento continan siendo de 16
bits en el 80386. Hay tambin dos nuevos
registros de segmento: FS y GS que son registros
adicionales para segmentos temporales (como ES).

Computacin y Programacin de Bajo Nivel 21


Registros de 32 bits del 80386

Computacin y Programacin de Bajo Nivel 22


Registros de 32 bits del 80386

Computacin y Programacin de Bajo Nivel 23


Modo Real
En el modo real la memoria est limitada a slo
1Mb (220 bytes).
Las direcciones es desde 00000 hasta FFFFF.
Estas direcciones requieren un nmero de 20 bits,
por lo que en registros de 16 bits no se pueden
trabajar. Para solucionar el problema se utilizan 2
valores de 16 bits para determinar una direccin.
El primer valor de 16 bits es llamado seleccionador
(selector). Los valores del seleccionador deben estar
almacenados en registros de segmento.
El segundo valor de 16 bits es llamado
desplazamiento (offset).

Computacin y Programacin de Bajo Nivel 24


Modo Real
La direccin fsica efectiva referenciada por un
par seleccionador:desplazamiento es calculada por la
frmula:
16* seleccionador+desplazamiento
Multiplicar por 16 es equivalente a aadir un 0 a la
derecha del nmero.
Por ejemplo la direccin fsica referenciada por
047C:0048 est dado por:
047C0
+ 0048
04808
La direccin 3D00:0300 es equivalente a
3D30:0000
Computacin y Programacin de Bajo Nivel 25
Modo Real
Construccin de una direccin de memoria en base
a una direccin de segmento y una direccin de
offset.

Cada byte de memoria no tiene una sola direccin


segmentada. La direccin fsica 04808 puede ser
referenciada por 047C:0048, 047D:0038,
047E:0028 047B:0058.
Computacin y Programacin de Bajo Nivel 26
Registros del 8086 y 80286
Los registros del procesador tienen la tarea de
almacenar las posiciones de memoria, ya que los
accesos a memoria son mucho ms lentos que los
accesos a los registros.
El 8086 dispone de 14 registros de 16 bits
empleados para controlar la ejecucin de
instrucciones, direccionar la memoria proporcionar
capacidad aritmtica lgica.
Cada registro puede almacenar datos direcciones
de memoria.

Computacin y Programacin de Bajo Nivel 27


Registros del 8086 y 80286
AX SP
BX BP
CX SI
DX DI

Registros de Propsito Registros Punteros y


General de datos Registros ndice

CS IP
DS FLAGS FL
SS
Registro Puntero de Instrucciones;
ES y Registro de Banderas.
Registros de Segmento

Computacin y Programacin de Bajo Nivel 28


Registros del 8086 y 80286
Registros de Propsito General
Se utilizan para clculo y almacenamiento de propsito
general.
Los programas leen datos de memoria y los dejan en
estos registros, ejecutan operaciones sobre ellos, y
guardan los resultados en memoria.
Hay cuatro registros de propsito general:
AX Este registro es el acumulador principal, implicado en gran parte de
las operaciones de aritmticas y de E/S.
BX Recibe el nombre de registro base ya que es el nico registro de
propsito general que se usa como un ndice en el direccionamiento
indexado. Se suele utilizar para clculos aritmticos.
CX El CX es conocido como registro contador ya que puede contener un
valor para controlar el nmero de veces que se repite una cierta
operacin.
DX Se conoce como registro de datos. Algunas operaciones de E/S
requieren su uso, y las operaciones de multiplicacin y divisin con
cifras grandes suponen que el DX y el AX trabajando juntos.
Computacin y Programacin de Bajo Nivel 29
Registros del 8086 y 80286
Registros de Segmento
Los registros de segmento son de 16 bits, se utilizan para
formar la direccin efectiva real de una localidad de
memoria.
Contienen la direccin de segmento de un dato una
instruccin.

CS Registro Segmento de Cdigo. Establece el rea de memoria


dnde est el programa durante su ejecucin.
DS Registro Segmento de Datos. Especifica la zona donde los
programas leen y escriben sus datos.
SS Registro Segmento de Pila. Permite la colocacin en memoria
de una pila, para almacenamiento temporal de direcciones y
datos.
ES Registro Segmento Extra. Se suele utilizar en algunas
operaciones con cadenas de caracteres para direccionar la
memoria.

Computacin y Programacin de Bajo Nivel 30


Registros del 8086 y 80286
Registro Apuntador de Instrucciones
Es un registro de 16 bits que contiene el desplazamiento
de la direccin de la siguiente instruccin que se
ejecutar. Est asociado con el registro CS en el sentido
de que IP indica el desplazamiento de la siguiente
instruccin a ejecutar dentro del segmento de cdigo
determinado por CS

Direccin del segmento de cdigo en CS: 25A40h


Desplazamiento dentro del segmento de cdigo en IP: +0412h
Direccin de la siguiente instruccin a ejecutar: 25E52h

Computacin y Programacin de Bajo Nivel 31


Registros del 8086 y 80286
Registros Apuntadores (SP y BP)
Los registros apuntadores estn asociados al registro de
segmento SS y permiten acceder a los datos almacenados
en la pila:

Registro SP Registro Puntero de Pila. Proporciona un valor de


desplazamiento que se refiere a la palabra actual
que est siendo procesada en la pila.
Registro BP Registro Puntero Base. Facilita la referencia a los
parmetros de las rutinas, los cuales son datos
y direcciones transmitidos va la pila.

Computacin y Programacin de Bajo Nivel 32


Registros del 8086 y 80286
Registros Indice (SI y DI)
Los registros ndice se utilizan fundamentalmente en
operaciones con cadenas y para direccionamiento
indexado:

Registro SI Registro Indice Fuente, requerido en algunas


operaciones con cadenas de caracteres. Este registro
est asociado con el registro DS.
Registro DI Registro Indice Destino, requerido tambin en
determinadas operaciones con cadenas de caracteres.
Est asociado al registro DS o ES.

Computacin y Programacin de Bajo Nivel 33


Registros del 8086 y 80286
Registro de banderas, FLAGS, o registro de
estado (FL).
Registro de 16 bits, slo se utilizan nueve bits. Sirven
para indicar el estado actual de la mquina y el resultado
del procesamiento.
La mayor parte de las instrucciones de comparacin y
aritmticas modifican este registro.
Algunas instrucciones pueden realizar pruebas sobre este
registro para determinar la accin siguiente.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

- - - - O D I T S Z A - P - C

Computacin y Programacin de Bajo Nivel 34


Registros del 8086 y 80286
Registro de banderas, FLAGS, o registro de
estado (FL).
Los bits 0, 2, 4, 6, 7 y 11 son indicadores de condicin
que reflejan los resultados de las operaciones del
programa; los bits 8 al 10 son indicadores de control que,
modificados por el programador, sirven para controlar
ciertos modos de procesamiento, y el resto no se utilizan.
El significado de cada uno de los bits es el siguiente:

OF Bit de Overflow o desbordamiento. Indica desbordamiento de un


bit de orden alto (ms a la izquierda), despus de una operacin
aritmtica.
DF Bit de Direccin. Designa la direccin, creciente (0) o decreciente
(1), en operaciones con cadenas de caracteres.
IF Bit de Interrupcin. Indica que una interrupcin externa, como la
entrada desde el teclado, sea procesada o ignorada.

Computacin y Programacin de Bajo Nivel 35


Registros del 8086 y 80286
Registro de banderas, FLAGS, o registro de
estado (FL).
TF Bit de Trap o Desvo. Procesa o ignora la interrupcin interna de
trace (procesamiento paso a paso).
SF Bit de Signo. Indica el valor del bit ms significativo del registro
despus de una operacin aritmtica o de desplazamiento.
ZF Bit Cero. Se pone a 1 si una operacin produce 0 como
resultado.
AF Bit de Carry Auxiliar. Se pone a 1 si una operacin aritmtica
produce un acarreo del bit 3 al 4. Se usa para aritmtica
especializada (ajuste BCD).
PF Bit de Paridad. Se activa si el resultado de una operacin tiene
paridad par.
CF Bit de Acarreo. Contiene el acarreo de una operacin aritmtica o
de desplazamiento de bits.

Computacin y Programacin de Bajo Nivel 36