Arquitectura de las Computadoras

 

TAREA #8

 

REGISTROS

 

 

Registros de Propósito General:

Son 4 registros de 16 bits, que el programador usará para una diversidad de funciones. Tienen varias características en común:

  • Pueden ejecutar la mayoría de las operaciones del procesador, incluyendo la generalidad de las instrucciones aritméticas y lógicas, salvo la multiplicación y división.
  • Se dividen lógicamente en 2 registros de 8 bits cada uno, llamados parte alta y parte baja; refiriéndose el registro de parte baja a los bits 0-7 (menos significativos) y la parte alta a los bits 8-15 (más significativos).
  • Pueden conectarse a los registros de segmentos; de hecho, siempre se hará acceso a los registros de segmento a través de un registro de propósito general, o de la pila.

Los 4 registros tienen su nombre propio y ciertas especializaciones:

 

AX: Registro de acumulador

Este registro es el más usado, siendo de propósito general; y tiene ciertas especializaciones, de ahí su nombre:

  • Es el único que puede ser usado como multiplicando en la multiplicación
  • Es el único que puede ser usado como dividendo en la división
  • Es el parámetro que selecciona los distintos servicios del Sistema Operativo, usados mediante el mecanismo de Interrupciones.

 

BX: Registro de Base

Este registro, además de las características generales de los registros de propósito general, se especializa

  • en el acceso a memoria en combinación con los registros de índice, especialmente para el manejo de arreglos.

 

CX: Registro de Contador

Este registro, como su nombre indica, será ampliamente usado como contador. Puede ser usado como cualquier registro de propósito general, pero tiene capacidades especiales para ser usado en instrucciones:

  • de manejo de ciclos
  • como contador en los corrimientos
  • de manejo de memoria y strings

 

DX: Registro de Datos

Este registro de propósito general tiene como especializaciones:

  • Formar con AX números de 32 bits, siendo en este caso la parte más significativa.
  • El acceso a puertos. Las instrucciones IN y OUT, que permiten dicho acceso, requerirán en ciertos casos que el número de puerto esté en DX.

 

 

Registros de Índice

Estos registros, de 16 bits, son muy similares a los de propósito general, pero no tienen todas las capacidades de los mismos; en particular:

  • No pueden conectarse directamente con los registros de segmentos.
  • No pueden verse como dos registros de 8 bits (parte alta y parte baja).

Ahora bien, tienen sus propias habilidades. Específicamente, están diseñados para combinarse con los registros de segmento, ser usados como desplazamientos y así intervenir en el acceso a memoria. Se les usa, por ello, para el acceso a arreglos o como apuntadores.

Los 4 registros que se consideran en este grupo son:

 

SI: Source Index, o Apuntador a la Fuente

Este registro se especializa en el acceso a bytes o words dentro del segmento de datos; existen instrucciones que lo toman por defecto como el registro que apunta a una localidad de memoria que se va a leer, por lo cual toma su nombre.

 

DI: Destination Index, Apuntador al Destino

Este registro se especializa en el acceso a bytes o words dentro del segmento de datos o el extra; existen instrucciones que lo toman por defecto como el registro que en combinación con el ES apunta a una localidad de memoria que se va a escribir, por lo cual toma su nombre.

 

BP: Base Pointer, o apuntador a la Base de la Pila.

Este registro es usado para accesar, dentro del segmento de pila, la información. Principalmente nos permite determinar cuando hay un underflow, es decir, cuando se quiere sacar más información de la pila que la que se ha colocado en ella; y el acceso a variables locales y parámetros.

 

SP: Stack Pointer, o apuntador al tope de la Pila.

Este registro también está siempre asociado al manejo de la pila. Su función especial es marcar el tope de la pila, y por tanto, indica en qué localidad de memoria se localiza la información de la pila; se incrementa cuando se hace un POP, con lo que apunta al siguiente elemento en la pila; y se decrementa al hacer un PUSH, con lo que controla el acceso a la memoria de la pila.

 

ALU: Unidad Aritmética-Lógica

Este componente, como su nombre indica, contiene la circuitería necesaria para realizar las diversas operaciones aritméticas y lógicas. Recibe sus operandos por el Bus A, y genera los resultados regresándolos al mismo bus. Una particularidad que es importante recalcar es su conexión al registro de banderas, por lo cual todas las operaciones aritméticas y lógicas, de acuerdo a su resultado, lo alterarán.

 

Registro de Banderas:

Este es un registro de 16 bits, usados como banderas. Esto quiere decir que cada uno de los bits señala un evento dentro del procesador; cuando el bit tiene un valor de 0, el evento no ocurrió (falso); y cuando tiene un valor de 1, el evento ocurrió (verdadero). Entre las banderas más importantes mencionaremos:

ZF: Bandera de resultado 0

Se prende cuando el resultado de la última operación realizada en el ALU fue un 0.

CF: Bandera de carry

Se prende cuando el resultado de la última operación realizada en el ALU (necesariamente, una suma o resta) generó un carry o un borrow.

OF: Bandera de overflow

Se prende cuando el resultado de la última operación realizada en el ALU excedió la capacidad del registro donde se almacena (overflow).

SF: Bandera de signo

Se prende cuando el resultado de la última operación realizada en el ALU fue negativo, según la representación de complemento a 2 que mencionamos en clases anteriores.

AF: Bandera de carry auxiliar

Se prende cuando el resultado de la última operación realizada en el ALU generó un carry cuando estaba a la mitad. Por ejemplo, si sumamos dos números de 16 bits, nos indicará si la suma de las partes bajas (primeros 8 bits) había generado carry; si sumamos dos números de 8 bits, indica si el resultado intermedio después de sumar los 4 bits menos significativos, generó carry para sumarse a los bits 5.

DF: Bandera de dirección

A diferencia de las anteriores, esta bandera no se prende como resultado del ALU, sino que el programador la usa para controlar la dirección del acceso mediante apuntadores, especialmente en las instrucciones de strings.

IF: Bandera de interrupción

Se prende cuando el procesador es interrumpido, y está ejecutando una rutina de atención de interrupción. Esto evita que el procesador acepte interrupciones mientras está procesando interrupciones previas, de manera que no se pierda el control del procesador.

 

 

CONCLUSIONES:

En esta tarea se presentan los registros que usa una computadora, para saber un poco mas de como funciona y como trabaja la memoria

 

 

REFERENCIAS:

http://www.sinergia-web.com.mx/clases/asm9708/Temas/clase07.htm

http://lafaq.espaweb.com/manuales/programacion.htm

http://sesic.sep.gob.mx/basemin/biblioteca/manuales.htm

 

Pagina Principal Inicio