miércoles, 28 de agosto de 2013

Registros

REGISTROS INTERNOS DEL MICROPROCESADOR

       La unidad Central de Proceso tiene 14 registros internos cada uno de 16 bits.Los primeros cuatro, AX, BX, CX y DX, son de uso general y se pueden usar también como registros de 8 bits. Estos son los únicos registros que pueden usarse de modo dual (en 8 o 16 bits).
      Los registros internos del procesador se puede clasificar en 6 tipos diferentes


  1. Registros de segmento
  2. registros de propósito general
  3. registros de apuntadores
  4. Registro de banderas
  5. Registros de puntero de instrucción
  6. Registro de pila.
Registros de segmento.
un registro de segmento tiene 16 bits de longitud y facilita un area de memoria para direccionamiento conocida como el segmento actual.

Registros de propósito general.
Los registros de propósito general AX, BX, CX y DX son los caballos de batalla del sistema.

 

Registro de apuntador de Instrucciones.
EL registro apuntador de instrucciones 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 y BP están asociados con el registro SS y permiten al sistema accesar datos en el segmento de la pila.

Registro de Indice.
Los registros SI Y DI estas disponibles para direccionamiento indexado y para sumas y restas.

Registros Banderas
De los 16 bits del registro de banderas , nueve son comunes a toda la familia de procesadores 8086, y sirven para indicar el restado actual de la maquina y el resultado del procesamiento. Muchas instrucciones que piden comparaciones y aritmética cambian al estado de las banderas, algunas cuyas instrucciones pueden realizar pruebas para determinar la acción subsecuente.

Registros de Pila
La pila es una rea d 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.

   Los Registros de la CPU son conocidos por sus nombres propios, que son:

  • AX acumulador
  • BX registro base
  • CX registro contador
  • DX registro de datos
  • DS  Registro del segmento de datos
  • ES  registro de segmento extra
  • SS  registro de segmento de pila
  • CS  registro de segmento de codigo
  • BP  registro de apuntadores base
  • SI   registro indice fuente
  • DI  registro indice destino
  • SP  registro apuntador de pila
  • IP  registro de apuntador de siguiente instruccion
  • F   registro de banderas.

El registro AX se usa para almacenar resultados, lectura o escritura desde o hacia los puertos.
El registro BX sirve como apuntador base o indice.
El registro CX se utiliza en operaciones de iteracion, como un contador que automáticamente se incrementa o decrementa de acuerdo con el tipo de instrucción usada.
El registro DX se usa como puente para el acceso de datos.

El DS es un registro de segmento cuya función es actuar como policía donde se encuentran los datos. Cualquier dato debe estar dentro de este segmento. La única excepción es cuando tenemos programas del tipo *.com, ya que estos solo pueden existir un segmento.
El ES es un registro que tiene el propósito general de permitir operaciones sobre cadenas, pero también puede ser una extensión de DS

EL SS tiene la tarea exclusiva de manejar la posición de memoria donde se encuentra la pila(stack) Esta es una estructura usada para almacenar datos en forma temporal, tanto de un programa como de las operaciones internas de la computadora personal. La CPU usa este segmento para almacenar las direcciones de retorno de las llamadas rutinas.
El registro de segmentos mas importante es el CS, es aquí donde se encuentra el código ejecutable de cada programa, el cual esta directamente ligado a los diferentes modelos de memoria.

El registro BP se usa para manipular la pila sin afectar al registro de segmentos SS. Es útil cuando se usa interfaz entre lenguajes de alto nivel y el ensamblador. Nos permite acceder parámetro pasados sin alterar el registro de segmento SS.
El registro SI  es útil para manejar bloques de cadenas en memoria , siendo el indice fuente, representa la dirección donde se encuentra la cadena.
El registro DI es útil para manejar bloques de cadenas en memoria, siendo el indice de destino, representa la dirección donde sera copiada.

El registro SP apunta a un área especifica de memoria que sirve para almacenar datos bajo la estructura LIFO(ultimo en entrar, primero en salir), conocida como pila.
El registro IP apunta a la siguiente instrucción que sera ejecutada en memoria. 





Del registro F (bandera) se describe el significado de cada bit en este registro:

Todas la Banderas apagadas:
NV   UP  DI  PL  NZ  NA  PO  NC

todas las banderas prendidas:
OV  DN  EI  NG  ZR  AC  PE CY

significado de los bits:
  • Overflow                               NV=no hay desbordamiento
                                                     OV=SI lo hay
  • Direction                               UP=Hacia adelante
                                                     DN=Hacia atrás
  • Interrupts                              DI=desactivadas
                                                     EI=activadas
  • Sing                                      PL=positivo
                                                     NG=negativo
  • Zero                                      NZ=no es cero
                                                     ZR=si lo es
  • Auxiliary Carry                      NA= no hay acarreo auxiliar 
                                                    AC=hay acarreo auxiliar
  • Parity                                   PO= Paridad non                             
                                                    PE= Paridad par
  • Carry                                   NC= No hay acarreo
                                                    CY=si lo hay


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 procesado o ignorada.

TF (trampa). Permite la operación en modo de un paso. Los programas depuradores, como el DEBUG, activan esta banderas de manera que usted pueda avanzar en la ejecución de una sola instruccion a un tiempo, para examinar el efecto de esa instruccion 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- resultante diferente de cero y 1= resultante 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 de datos de 8 bits de bajo orden (mas a la derecha).

CF (acarreo). Contiene el acarreo de orden alto (mas a la Izquierda) después d una operación aritmética; también lleva el contenido del ultimo bit en una operación de corrimiento o de rotación.

EJEMPLO

Registros de uso general del 8086/8088:
Tienen 16 bits cada uno y son ocho:


  1. 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.


  2. 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.


  3. 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).


  4. 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).


  5. 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.


  6. BP = Puntero base (no se puede subdividir). Generalmente se utiliza para realizar direccionamiento indirecto dentro de la pila.


  7. SI = Puntero índice (no se puede subdividir). Sirve como puntero fuente para las operaciones con cadenas. También sirve para realizar direccionamiento indirecto.


  8. DI = Puntero destino (no se puede subdividir). Sirve como puntero destino para las operaciones con cadenas. También sirve para realizar direccionamiento indirecto.


                                                        


Referencias y  Bibliografia.

  • https://docs.google.com/file/d/0BxraEIYzL2HWRVJUUml2WkUxVTA/edit?usp=sharing
  • http://www.oocities.org/mx/antrahxg/documentos/org_comp/registro.html
  • http://perso.wanadoo.es/pictob/microprg.htm


No hay comentarios.:

Publicar un comentario