MICROPROCESADOR |
EL CEREBRO DEL COMPUTADOR |
CPU
La unidad central de procesos: Es un
circuito microscópico que interpreta y ejecuta instrucciones, también se ocupa
del control y el proceso de datos en los ordenadores. Es la unidad fundamental
de la computadora. es el que interpreta las instrucciones contenidas en los
programas o definidas por las entradas y ejecuta el procedimiento de datos.
Coordina y controla todas las operaciones
EL PROCESADOR:
Es el que se encarga de ejecutar
instrucciones específicos por el programa.
Funciones Básicas
¨
Captar instrucciones
¨
Interpretar instrucciones
¨
Captar datos
¨
Procesar datos
¨
Escribir datos
Unidad de control: Se encarga de la interpretación y
ejecución de las instrucciones del programa, también controla todas componentes
de un computador por medio de la línea de conexión llamada buses.
U.C: Busca, decodifica, ejecuta.
a.
Registro de Contador de Programa (CP).
b.
Registro de Dirección (RD).
c.
Registro de Instrucciones (RI).
d.
Decodificador (D).
e.
Reloj (R).
f.
Generador de programa (S).
Unidad aritmética lógica (ALU-UAL): Es la unidad encada de realizar las operaciones lógicas y aritméticas
usando como base la operación suma y la notación del complemento dos todos los
cálculos y operaciones para el procesamiento de datos se efectúan en la UAL.
Operaciones
aritméticas
And
Or
Not
REGISTROS
Los
registros del procesador son sitios de almacenamiento rápido y temporal, se
emplean para controlar instrucciones en ejecución, manejar direccionamiento de
memoria y proporcionar capacidad aritmética. Los registros son espacios
físicos dentro del microprocesador con capacidad de 4 bits hasta 64 bits
dependiendo del microprocesador que se emplee.
Los registros
del procesador se emplean para controlar instrucciones en ejecución, manejar
direccionamiento de memoria y proporcionar capacidad aritmética.
- Banco de Registro (BR)
- Señalizadores de Estado (SE)
- Circuito de Operador (CIROP)
- Registro de Resultado (RR)
Registros de segmento.
Un registro de segmento se utiliza
para alinear en un límite de párrafo o dicho de otra forma codifica la
dirección de inicio de cada segmento y su dirección en un registro de segmento
supone cuatro bits 0 a su derecha. Un registro de segmento tiene 16 bits de
longitud y facilita un área de memoria para direccionamientos conocidos como el
segmento actual. Los registros de segmento son:
- Registro CS
- Registro DS
- Registro SS
- Registro ES
- Registro FS y GS
Segmento de codigo
El segmento de código (CS) contiene
las instrucciones de maquina que son ejecutadas por lo común la primera
instrucción ejecutable esta en el inicio del segmento, y el sistema operativo
enlaza a esa localidad para iniciar la ejecución del programa. Como su nombre
indica, el registro del CS direcciona el segmento de código. Si su área de
código requiere mas de 64K, su programa puede necesitar definir mas de un
segmento de código.
Segmento de datos
El segmento de
datos (DS) contiene datos, constantes y áreas de trabajo definidos por el
programa. El registro DS direcciona el segmento de datos. Si su área de datos
requiere mas de 64K, su programa puede necesitar definir mas de un segmento de
datos.
Segmento de pila
En términos
sencillos, la pila contiene los datos y direcciones que usted necesita guardar
temporalmente o para uso de sus "llamadas" subrutinas. El registro de
segmento de la pila (SS) direcciona el segmento de la pila.
Registro cs
Esta dirección de segmento, más un valor de desplazamiento en el registro de apuntado de instrucción (IP), indica la dirección de una instrucción que es buscada para sí ejecución.
Esta dirección de segmento, más un valor de desplazamiento en el registro de apuntado de instrucción (IP), indica la dirección de una instrucción que es buscada para sí ejecución.
Registro Ds
La dirección inicial de un segmento de datos de programa es almacenada en el registro DS. Esta dirección, más un valor de desplazamiento en una instrucción, genera una referencia a la localidad de un bytes especifico en el segmento de datos.
La dirección inicial de un segmento de datos de programa es almacenada en el registro DS. Esta dirección, más un valor de desplazamiento en una instrucción, genera una referencia a la localidad de un bytes especifico en el segmento de datos.
Registro ss
El registro SS permite la colocación en memoria de una pila, para almacenamiento temporal de direcciones y datos. Esta dirección de segmento, más un valor de desplazamiento en el registro del apuntador de la pila (SP), indica la palabra actual en la pila que está siendo direccionada.
El registro SS permite la colocación en memoria de una pila, para almacenamiento temporal de direcciones y datos. Esta dirección de segmento, más un valor de desplazamiento en el registro del apuntador de la pila (SP), indica la palabra actual en la pila que está siendo direccionada.
Registro ES
En este contexto, el registro ES está asociado con el registro DI (índice). Un programa que requiere el uso del registro ES puede inicializarlo con una dirección apropiada.
En este contexto, el registro ES está asociado con el registro DI (índice). Un programa que requiere el uso del registro ES puede inicializarlo con una dirección apropiada.
Registros FS y GS.
Son registros extra de segmento en los procesadores 80386 y posteriores a estos procesadores.
Son registros extra de segmento en los procesadores 80386 y posteriores a estos procesadores.
REGISTROS
DE PROCESADOR DE PROPOSOTO GENERAL
Los registros de propósitos generales
(AX, BX, CX y DX) 16 bits. Son los únicos en el sentido de que se puede
direccionarlos como una palabra o como una parte de un byte. El último byte de
la izquierda es la parte "alta", y el último byte de la derecha es la
parte "baja" por ejemplo, el registro CX consta de una parte CH
(alta) y una parte CL (baja)
Registros
AX:
El registro AX, el acumulador
principal, es utilizado para operaciones que implican entrada/salida y la mayor
parte de la aritmética. Por ejemplo, las instrucciones para multiplicar,
dividir y traducir suponen el uso del AX. También, algunas operaciones generan
código más eficientes si se refiere al AX en lugar de los otros registros.
Registro
BX:
El BX es conocido como el registro
base ya que es el único registro de propósitos generales que pueden ser unos
índices para direccionamiento indexado. También es común emplear al BX para
cálculos.
Registro
DX:
El DX es conocido como el registro de
datos. Algunas operaciones de entrada/salida requieren su uso, y las
operaciones de multiplicación y división con cifras grandes suponen al DX y al
AX trabajando juntos. Puede usar los registros de propósitos para suma y resta
de cifras de 8, 16, 32 bits.
AX se usa siempre en multiplicaciones y divisiones y
es el más eficiente para operaciones aritméticas
y de movimiento de datos.
BX se usa como puntero, y junto con DS referencia
posiciones de memoria. Por ejemplo, para cargar en
AL el contenido de la posición de memoria número 9:
MOV AX,0
MOV DS,AX
MOV BX,9
MOV AL,[BX]
CX se usa principalmente como contador en los bucles.
Estos son tan frecuentes que existe una
instrucción especial, LOOP, que comprueba
su valor, volviendo al principio del
bucle si es distinto
de cero:
MOV CX,10
BUCLE:
instrucciones
LOOP BUCLE
DX es el único registro que puede usarse para acceder a
puertos. Algunas operaciones de entrada/salida
requieren su uso, y las operaciones de multiplicación y división
con cifras grandes suponen al DX y al
AX trabajando juntos. Puede usar los registros de propósitos para suma y
resta de cifras de 8, 16, 32 bits.
Por ejemplo, para escribir 62H en la direccion de puerto 1000H:
MOV AL,62H
MOV DX,1000H
OUT
DX,AL
Registro
Apuntadores: SP, BP
Que están asociados al segmento SS y
permiten al sistema a acceder datos en el segmento de la pila.
El registro
apuntador de instrucciones (IP) de 16 bits contiene el desplazamiento de
dirección de la siguiente instrucción que se ejecuta. El IP esta asociado con
el registro CS en el sentido de que el IP indica la instrucción actual dentro
del segmento de código que se esta ejecutando actualmente. Los procesadores
80386 y posteriores tienen un IP ampliado de 32 bits, llamado EIP.
Registro
Apuntadores
Los registros SP
(apuntador de la pila) Y BP (apuntador de base) están asociados con el registro
SS y permiten al sistema acceder datos en el segmento de la pila.
En el ejemplo
siguiente, el registro CS contiene 25A40H y el IP contiene 412H. Para encontrar
la siguiente instrucción que será ejecutada, el procesador combina las
direcciones en el CS y el IP:
Segmento de
dirección en el registro CS: 25A40H Desplazamiento de dirección en el registro
IP: + 412H Dirección de la siguiente instrucción: 25E52H
Registro BP.
El registro BP de 16 bits facilita la
referencia de parámetros, los cuales son datos y direcciones transmitidos vía
lapida.
Registro índice:
Los registros SI y DI están disponibles para direccionamientos indexados y para sumas y restas.
Los registros SI y DI están disponibles para direccionamientos indexados y para sumas y restas.
Registro SI.
El registro índice de 16 bits es
requerido por algunas operaciones con cadenas (de caracteres).
El SI está asociado con el registro
DS.
CLD
MOV AX,0
MOV DS,AX
MOV
SI,20
LODSB
Registro DI
El registro
índice destino también es requerido por algunas operaciones con cadenas de
caracteres. En este contexto, el DI esta asociado con el registro ES. Los
procesadores 80386 y posteriores permiten el uso de un registro ampliado de 32
bits, el E
DI también se usa como puntero.
Permite escribir en posiciones sucesivas de memoria cuando
se usa con instrucciones de cadena:
CLD
MOV DX, 0
MOV
ES, DX
MOV DI, 2048
STOSB
Registro de
Bandera
De los 16 bits del registro de banderas, nueve son
comunes a toda la familia de procesadores 8086 y
sirven para indicar el estado actual de la maquina
y el resultado del procesamiento. Muchas
instrucciones quepiden comparaciones y aritmética
cambian el estado de las banderas, algunas
cuyas instrucciones pueden realizar pruebas para
determinar la acción subsecuente. En resumen,
los bits de las banderas comunes son como
sigue:
OF (Overflow, desbordamiento): Indica desbordamiento de un bit de orden alto (mas
a la izquierda) después de una operación aritmética.
DF
(dirección): Designa la dirección hacia la izquierda o hacia la
derecha para mover o comparar cadenas de caracteres.
IF
(interrupción): Indica que una interrupción externa, como la
entrada desde el teclado, sea procesada o ignorada.
TF
(trampa): Permite la operación del procesador en modo de un
paso. Los programas depuradores, como el DEBUG, activan esta bandera de manera
que usted pueda avanzar en la ejecución de una sola instrucción a un tiempo,
para examinar el efecto de esa instrucción sobre los registros de memoria.
SF
(signo): Contiene el signo resultante de una operación
aritmética (0 = positivo y 1 = negativo).
ZF
(cero): Indica el resultado de una operación aritmética o
de comparación (0 = resultado diferente de cero y 1 = resultado igual a cero).
AF
(acarreo auxiliar): Contiene un acarreo externo del bit 3 en un dato
de 8 bits para aritmética especializada.
PF
(paridad): Indica paridad par o impar de una operación en
datos de 8 bits de bajo orden (mas a la derecha).
CF
(acarreo): Contiene el acarreo de orden mas alto (mas a la
izquierda) después de una operación aritmética; también lleva el contenido del
ultimo bit en una operación de corrimiento o de rotación. Las banderas están en
el registro de banderas en las siguientes posiciones:
Registros
de PILA
La pila es un área de memoria importante y por ello
tiene, en vez de uno, dos registros que se usan como desplazamiento (offset)
para apuntar a su contenido. Se usan como complemento al registro y son:
SP-
Stack Pointer: Se traduce como puntero de pila y es el que se
reserva el procesador para uso propio en instrucciones de manipulado de pila.
Por lo general, el programador no debe alterar su contenido.
BP- Base pointer:
Se usa como registro auxiliar. El programador puede usarlo para su provecho.
Claro que estos nombres y tipos de registros son
estándar, ya que cada fabricante puede utilizar otros registro que reemplacen a
estos o los auxilien, aun así, los fabricantes que usan otros registro tienen
la misma función que los anteriormente mencionado.
Ejemplo
Registros de uso general del 8086/8088:
Tienen 16 bits cada uno y son ocho:
Hay nueve indicadores de un bit en este registro de 16 bits. Los cuatro bits más significativos están indefinidos, mientras que hay tres bits con valores determinados: los bits 5 y 3 siempre valen cero y el bit 1 siempre vale uno (esto también ocurría en los procesadores anteriores).
CF (Carry Flag, bit 0): Si vale 1, indica que hubo "arrastre" (en caso de suma) hacia, o "préstamo" (en caso de resta) desde el bit de orden más significativo del resultado. Este indicador es usado por instrucciones que suman o restan números que ocupan varios bytes. Las instrucciones de rotación pueden aislar un bit de la memoria o de un registro poniéndolo en el CF.
PF (Parity Flag, bit 2): Si vale uno, el resultado tiene paridad par, es decir, un número par de bits a 1. Este indicador se puede utilizar para detectar errores en transmisiones.
AF (Auxiliary carry Flag, bit 4): Si vale 1, indica que hubo "arrastre" o "préstamo" del nibble (cuatro bits) menos significativo al nibble más significativo. Este indicador se usa con las instrucciones de ajuste decimal.
ZF (Zero Flag, bit 6): Si este indicador vale 1, el resultado de la operación es cero.
SF (Sign Flag, bit 7): Refleja el bit más significativo del resultado. Como los números negativos se representan en la notación de complemento a dos, este bit representa el signo: 0 si es positivo, 1 si es negativo.
TF (Trap Flag, bit 8): Si vale 1, el procesador está en modo paso a paso. En este modo, la CPU automáticamente genera una interrupción interna después de cada instrucción, permitiendo inspeccionar los resultados del programa a medida que se ejecuta instrucción por instrucción.
Ejemplo
Registros de uso general del 8086/8088:
Tienen 16 bits cada uno y son ocho:
- AX = Registro acumulador, dividido en AH y AL (8 bits cada uno). Usándolo se produce (en general) una instrucción que ocupa un byte menos que si se utilizaran otros registros de uso general. Su parte más baja, AL, también tiene esta propiedad. El último registro mencionado es el equivalente al acumulador de los procesadores anteriores (8080 y 8085). Además hay instrucciones como DAA; DAS; AAA; AAS; AAM; AAD; LAHF; SAHF; CBW; IN y OUT que trabajan con AX o con uno de sus dos bytes (AH o AL). También se utiliza este registro (junto con DX a veces) en multiplicaciones y divisiones.
- BX = Registro base, dividido en BH y BL. Es el registro base de propósito similar (se usa para direccionamiento indirecto) y es una versión más potente del par de registros HL de los procesadores anteriores.
- CX = Registro contador, dividido en CH y CL. Se utiliza como contador en bucles (instrucción LOOP), en operaciones con cadenas (usando el prefijo REP) y en desplazamientos y rotaciones (usando el registro CL en los dos últimos casos).
- DX = Registro de datos, dividido en DH y DL. Se utiliza junto con el registro AX en multiplicaciones y divisiones, en la instrucción CWD y en IN y OUT para direccionamiento indirecto de puertos (el registro DX indica el número de puerto de entrada/salida).
- SP = Puntero de pila (no se puede subdividir). Aunque es un registro de uso general, debe utilizarse sólo como puntero de pila, la cual sirve para almacenar las direcciones de retorno de subrutinas y los datos temporarios (mediante las instrucciones PUSH y POP). Al introducir (push) un valor en la pila a este registro se le resta dos, mientras que al extraer (pop) un valor de la pila este a registro se le suma dos.
- BP = Puntero base (no se puede subdividir). Generalmente se utiliza para realizar direccionamiento indirecto dentro de la pila.
- SI = Puntero índice (no se puede subdividir). Sirve como puntero fuente para las operaciones con cadenas. También sirve para realizar direccionamiento indirecto.
- DI = Puntero destino (no se puede subdividir). Sirve como puntero destino para las operaciones con cadenas. También sirve para realizar direccionamiento indirecto.
Cualquiera de
estos registros puede utilizarse como fuente o destino en operaciones
aritméticas y lógicas
Indicadores (flags) Hay nueve indicadores de un bit en este registro de 16 bits. Los cuatro bits más significativos están indefinidos, mientras que hay tres bits con valores determinados: los bits 5 y 3 siempre valen cero y el bit 1 siempre vale uno (esto también ocurría en los procesadores anteriores).
CF (Carry Flag, bit 0): Si vale 1, indica que hubo "arrastre" (en caso de suma) hacia, o "préstamo" (en caso de resta) desde el bit de orden más significativo del resultado. Este indicador es usado por instrucciones que suman o restan números que ocupan varios bytes. Las instrucciones de rotación pueden aislar un bit de la memoria o de un registro poniéndolo en el CF.
PF (Parity Flag, bit 2): Si vale uno, el resultado tiene paridad par, es decir, un número par de bits a 1. Este indicador se puede utilizar para detectar errores en transmisiones.
AF (Auxiliary carry Flag, bit 4): Si vale 1, indica que hubo "arrastre" o "préstamo" del nibble (cuatro bits) menos significativo al nibble más significativo. Este indicador se usa con las instrucciones de ajuste decimal.
ZF (Zero Flag, bit 6): Si este indicador vale 1, el resultado de la operación es cero.
SF (Sign Flag, bit 7): Refleja el bit más significativo del resultado. Como los números negativos se representan en la notación de complemento a dos, este bit representa el signo: 0 si es positivo, 1 si es negativo.
TF (Trap Flag, bit 8): Si vale 1, el procesador está en modo paso a paso. En este modo, la CPU automáticamente genera una interrupción interna después de cada instrucción, permitiendo inspeccionar los resultados del programa a medida que se ejecuta instrucción por instrucción.
IF
(Interrupt Flag, bit 9): Si vale 1, la CPU reconoce pedidos de interrupción
externas enmascarables (por el pin INTR). Si vale 0, no se reconocen tales
interrupciones. Las interrupciones no enmascarables y las internas siempre se
reconocen independientemente del valor de IF. DF (Direction Flag, bit 10): Si
vale 1, las instrucciones con cadenas sufrirán "auto-decremento",
esto es, se procesarán las cadenas desde las direcciones más altas de memoria
hacia las más bajas. Si vale 0, habrá "auto-incremento", lo que
quiere decir que las cadenas se procesarán de "izquierda a derecha".
OF (Overflow flag, bit 11): Si
vale 1, hubo un desborde en una operación aritmética con signo, esto es, un
dígito significativo se perdió debido a que tamaño del resultado es mayor que
el tamaño del destino.
Registros de datos
|
AX
|
BX
|
CX
|
DX
|
Punteros de pila
|
SP
|
BP
|
||
Registros índice
|
DI
|
SI
|
||
Registros de segmento
|
CS
|
DS
|
ES
|
SS
|
Registro de flags
|