miércoles, 15 de marzo de 2017

Registros de Lenguaje Ensamblador

REGISTROS INTERNOS DEL MICROPROCESADOR

La Unidad Central de Proceso (CPU, por sus siglas en inglés) 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. Es decir, AX se puede dividir en AH y AL (AH es el byte alto, high, y AL es el byte bajo, low) Lo mismo es aplicable a los otros tres (BX en BH y BL, CX en CH y CL y DX en DH y DL).
Estos son los únicos registros que pueden usarse de modo dual (en 8 o 16 bits) 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 del segmento extra).
  • SS (registro del segmento de pila).
  • CS (registro del segmento de código).
  • BP (registro de apuntadores base).
  • SI (registro índice fuente).
  • DI (registro índice destino).
  • SP (registro del apuntador de pila).
  • IP (registro del apuntador de siguiente instrucción).
  • F (registro de banderas).


 El registro AX se usa para almacenar resultados, lectura o escritura desde o hacia los puertos. El BX sirve como apuntador base o índice. El CX se utiliza en operaciones de iteración, como un contador que automáticamente se incrementa o decrementa de acuerdo con el tipo de instrucción usada. El 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, ya sea una variable inicializada o no, debe estar dentro de este segmento. La única excepción es cuando tenemos programas del tipo *.com, ya que en éstos sólo puede existir un segmento. El registro ES tiene el propósito general de permitir operaciones sobre cadenas, pero también puede ser una extensión del 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 (PC, por sus siglas en inglés) En términos de operación interna, la CPU usa este segmento para almacenar las direcciones de retorno de las llamadas a rutinas. El registro de segmentos más importante es el CS o segmento de código. Es aquí donde se encuentra el código ejecutable de cada programa, el cual está directamente ligado a los diferentes modelos de memoria.

El registro BP (base pointer) 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. Puesto que dicha interfaz se basa en el concepto de la pila BP, nos permite acceder parámetros pasados sin alterar el registro de segmento SS. Los registros SI y DI son útiles para manejar bloques de cadenas en memoria, siendo el primero el índice fuente y el segundo el índice destino. En otras palabras, SI representa la dirección donde se encuentra la cadena y DI la dirección donde será copiada.

El registro SP apunta a un área específica de memoria que sirve para almacenar datos bajo la estructura LIFO (último en entrar, primero en salir), conocida como pila (stack) El registro IP (instruction pointer) apunta a la siguiente instrucción que será ejecutada en memoria.

A continuación se describe el significado de cada bit del registro F (banderas).

Todas las 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 = Sí lo hay

 Direction  UP = hacia adelante
                  DN = hacia atrás

 Interrupts  DI = desactivadas
                   EI = activadas

 Sign   PL = positivo
           NG = negativo

 Zero   NZ = no es cero
            ZR = sí 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 = sí lo hay

Referencia:Link

No hay comentarios:

Publicar un comentario