Componentes Principales de la CPU
La CPU (Unidad Central de Procesamiento), o microprocesador central de una computadora, se divide en los siguientes componentes principales:
- Unidad de Control: Gestiona y coordina todas las operaciones del sistema informático. Establece prioridades y solicita los servicios de los diferentes componentes para dar soporte a la unidad aritmético-lógica en sus operaciones elementales.
- Unidad Aritmético-Lógica (ALU): Realiza los cálculos matemáticos y lógicos necesarios para el funcionamiento de la computadora. Todo el funcionamiento del sistema se basa en una serie de operaciones matemáticas en código binario.
- Registros: Son una pequeña memoria interna dentro de la CPU que permiten a la ALU manejar las instrucciones y los datos necesarios para realizar las operaciones elementales.
- Bus de Datos: Es el medio por el que se transmite la instrucción o dato apuntado por el bus de direcciones. Se utiliza para el intercambio de instrucciones y datos, tanto internamente (entre los componentes del sistema informático) como externamente (entre el sistema informático y los subsistemas periféricos). Una característica clave de una computadora es el número de bits que puede transferir el bus de datos (16, 32, 64, etc.). Cuanto mayor sea este número, mayor será la cantidad de información que se puede manejar simultáneamente.
Tipos de Memoria
- Memoria RAM (Random Access Memory): Memoria de acceso aleatorio construida con semiconductores. La información se almacena en celdas de memoria que pueden adquirir uno de dos valores binarios. La memoria RAM se utiliza para almacenar temporalmente programas y datos, así como para guardar resultados intermedios durante un proceso.
- RAM Estática (SRAM): Mantiene la información almacenada permanentemente mientras recibe alimentación eléctrica.
- RAM Dinámica (DRAM): La celda de memoria tiende a descargarse, perdiendo la información. Se realiza una regrabación de la información cada pocos milisegundos para evitar la pérdida de datos.
- Memoria ROM (Read-Only Memory): Memoria de solo lectura. La información que contiene no se puede modificar. Se utiliza para guardar las instrucciones de arranque y el funcionamiento coordinado de la computadora.
Registros del Microprocesador
Los registros se encuentran en el microprocesador y se emplean para controlar instrucciones en ejecución, manejar el direccionamiento de memoria y proporcionar capacidad aritmética.
Registros de Segmento
Un registro de segmento tiene 16 bits de longitud y facilita un área de memoria para direccionamiento conocida como el segmento actual.
- Registro CS (Code Segment): El sistema operativo (DOS) almacena la dirección inicial del segmento de código de un programa en el registro CS. Esta dirección, junto con un valor de desplazamiento en el registro apuntador de instrucción (IP), indica la dirección de la instrucción que se va a ejecutar.
- Registro DS (Data Segment): La dirección inicial de un segmento de datos del programa se almacena 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 byte específico en el segmento de datos.
- Registro SS (Stack Segment): El registro SS permite la colocación en memoria de una pila (stack), para el almacenamiento temporal de direcciones y datos. El DOS almacena la dirección de inicio del segmento de pila de un programa en el registro SS. Esta dirección, más un valor de desplazamiento en el registro del apuntador de pila (SP), indica la palabra actual en la pila que está siendo direccionada.
- Registro ES (Extra Segment): Algunas operaciones con cadenas de caracteres utilizan el registro extra de segmento para manejar el direccionamiento de memoria. El registro ES está asociado con el registro DI (índice).
- Registros FS y GS: Son registros extra de segmento en los procesadores 80386 y posteriores.
Registros de Propósito General
Los registros de propósito general (AX, BX, CX y DX) son direccionables como una palabra (16 bits) o como un byte (8 bits).
- Registro AX (Acumulador): Utilizado para operaciones de entrada/salida y la mayor parte de la aritmética.
- Registro BX (Base): Puede ser usado como índice para direccionamiento indexado.
- Registro CX (Contador): Usado en contadores de ciclos.
- Registro DX (Datos): Utilizado en operaciones de multiplicación y división, junto con AX. También se usa en operaciones de E/S.
Registros Apuntadores
Los registros SP (apuntador de pila) y BP (apuntador de base) están asociados con el registro SS y permiten al sistema acceder a datos en el segmento de la pila.
- Registro SP (Stack Pointer): Apunta a la palabra actual que se está procesando en la pila. Los procesadores 80386 y posteriores tienen un apuntador de pila de 32 bits (ESP).
- Registro BP (Base Pointer): Facilita la referencia a parámetros (datos y direcciones) transmitidos a través de la pila. Los procesadores 80386 y posteriores tienen un BP ampliado de 32 bits (EBP).
Registros Índice
Los registros SI (índice fuente) y DI (índice destino) se utilizan para direccionamiento indexado y operaciones con cadenas de caracteres.
- Registro SI (Source Index): Asociado con el registro DS. Los procesadores 80386 y posteriores permiten el uso de un registro ampliado de 32 bits (ESI).
- Registro DI (Destination Index): Asociado con el registro ES. Los procesadores 80386 y posteriores permiten el uso de un registro ampliado de 32 bits (EDI).
Registro de Banderas (Flags)
De los 16 bits del registro de banderas, nueve son comunes a la familia de procesadores 8086. Indican el estado actual de la máquina y el resultado del procesamiento.
- OF (Overflow): Indica desbordamiento de un bit de orden alto después de una operación aritmética.
- DF (Direction): Designa la dirección (izquierda o derecha) para mover o comparar cadenas de caracteres.
- IF (Interrupt): Indica si una interrupción externa debe ser procesada o ignorada.
- TF (Trap): Permite la operación del procesador en modo de un paso (para depuración).
- SF (Sign): Contiene el signo resultante de una operación aritmética (0 = positivo, 1 = negativo).
- ZF (Zero): Indica el resultado de una operación aritmética o de comparación (0 = no cero, 1 = cero).
- AF (Auxiliary Carry): Contiene un acarreo externo del bit 3 en un dato de 8 bits (para aritmética especializada).
- PF (Parity): Indica paridad par o impar de una operación en datos de 8 bits.
- CF (Carry): Contiene el acarreo de orden más alto después de una operación aritmética. También lleva el contenido del último bit en una operación de desplazamiento o rotación.
Las banderas más importantes para la programación en ensamblador son O, S, Z y C (para operaciones de comparación y aritméticas), y D (para operaciones de cadenas de caracteres). Los procesadores 80286 y posteriores tienen banderas adicionales para propósitos internos, especialmente en modo protegido. También tienen un registro extendido de banderas (EFLAGS).
Registros de Pila
La pila es un área de memoria con dos registros asociados (SP y BP) que se usan como desplazamiento para apuntar a su contenido.
- SP (Stack Pointer): Puntero de pila. Reservado por el procesador para instrucciones de manipulado de pila.
- BP (Base Pointer): Registro auxiliar. Puede ser usado por el programador.
Nota: Los nombres y tipos de registros son estándar. Cada fabricante puede utilizar otros registros que reemplacen o auxilien a estos, pero, por lo general, cumplen la misma función.