Assembly - Registros
Las operaciones del procesador implican principalmente el procesamiento de datos. Estos datos se pueden almacenar en la memoria y acceder desde allí. Sin embargo, la lectura de datos desde y el almacenamiento en la memoria ralentiza el procesador, ya que involucra procesos complicados de envío de la solicitud de datos a través del bus de control y en la unidad de almacenamiento de memoria, y la transmisión de datos a través del mismo canal.
Para acelerar las operaciones del procesador, el procesador incluye algunas ubicaciones de almacenamiento en la memoria interna, llamadas registros.
Los registros almacenan elementos de datos para procesar sin tener que acceder a la memoria. Un número limitado de registros están integrados en el chip del procesador.
Registros del procesador
Hay diez registros de procesador de 32 bits y seis de 16 bits en la arquitectura IA-32. Los registros se agrupan en tres categorías:
Registros generales,
Registros de control, y
Registros de segmento.
Los registros generales se dividen en los siguientes grupos:
Registros de datos,
Registros de puntero, y
Índice de registros.
Registros de datos
Se utilizan cuatro registros de datos de 32 bits para operaciones aritméticas, lógicas y otras. Estos registros de 32 bits se pueden utilizar de tres maneras:
Como registros completos de datos de 32 bits: EAX, EBX, ECX, EDX.
Las mitades inferiores de los registros de 32 bits se pueden utilizar como cuatro registros de datos de 16 bits: AX, BX, CX y DX.
Las mitades inferiores y superiores de los cuatro registros de 16 bits mencionados anteriormente se pueden utilizar como ocho registros de datos de 8 bits: AH, AL, BH, BL, CH, CL, DH y DL.
Algunos de estos registros de datos tienen un uso específico en operaciones aritméticas.
AX es el acumulador primario; Se utiliza en entrada / salida y la mayoría de las instrucciones aritméticas. Por ejemplo, en la operación de multiplicación, un operando se almacena en un registro EAX o AX o AL según el tamaño del operando.
BX se conoce como el registro base, ya que podría utilizarse en el direccionamiento indexado.
CX se conoce como el registro de conteo, ya que los registros de ECX y CX almacenan el conteo de bucles en operaciones iterativas.
DX es conocido como el registro de datos. También se utiliza en operaciones de entrada / salida. También se usa con el registro AX junto con DX para operaciones de multiplicación y división que involucran valores grandes.
Registros de control
El registro de punteros de instrucciones de 32 bits y el registro de indicadores de 32 bits combinados se consideran registros de control.
Muchas instrucciones implican comparaciones y cálculos matemáticos y cambian el estado de los indicadores y algunas otras instrucciones condicionales prueban el valor de estos indicadores de estado para llevar el flujo de control a otra ubicación.
Los bits de bandera comunes son:
Indicador de desbordamiento (OF): indica el desbordamiento de un bit de orden superior (bit más a la izquierda) de los datos después de una operación aritmética con signo.
Indicador de dirección (DF): determina la dirección hacia la izquierda o hacia la derecha para mover o comparar datos de cadena. Cuando el valor de DF es 0, la operación de cadena toma la dirección de izquierda a derecha y cuando el valor se establece en 1, la operación de cadena toma la dirección de derecha a izquierda.
Indicador de interrupción (IF): determina si las interrupciones externas, como la entrada del teclado, etc., deben ignorarse o procesarse. Desactiva la interrupción externa cuando el valor es 0 y habilita las interrupciones cuando se establece en 1.
Indicador de captura (TF): permite configurar el funcionamiento del procesador en el modo de un solo paso. El programa DEBUG que usamos establece el indicador de captura, por lo que podríamos avanzar a través de la ejecución una instrucción a la vez.
Señal de señalización (SF): muestra la señal del resultado de una operación aritmética. Este indicador se establece de acuerdo con el signo de un elemento de datos después de la operación aritmética. El signo está indicado por el orden superior del bit de la izquierda. Un resultado positivo borra el valor de SF a 0 y el resultado negativo lo establece en 1.
Indicador de cero (ZF): indica el resultado de una operación aritmética o de comparación. Un resultado distinto de cero borra el indicador cero a 0, y un resultado cero lo establece en 1.
Indicador de transporte auxiliar (AF): contiene el acarreo del bit 3 al bit 4 después de una operación aritmética; Utilizado para aritmética especializada. El AF se establece cuando una operación aritmética de 1 byte provoca un acarreo del bit 3 al bit 4.
Indicador de paridad (PF): indica el número total de 1 bits en el resultado obtenido de una operación aritmética. Un número par de 1 bits borra el indicador de paridad a 0 y un número impar de 1 bits establece el indicador de paridad en 1.
Indicador de acarreo (CF): contiene el acarreo de 0 o 1 desde un bit de orden superior (extremo izquierdo) después de una operación aritmética. También almacena el contenido del último bit de una operación de cambio o rotación.
La siguiente tabla indica la posición de los bits de bandera en el registro de banderas de 16 bits:
Flag: | O | D | I | T | S | Z | A | P | C | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Bit no: | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Registros de segmento
Los segmentos son áreas específicas definidas en un programa para contener datos, código y pila. Hay tres segmentos principales:
Segmento de código - Contiene todas las instrucciones para ser ejecutado. Un registro de segmento de código de 16 bits o registro CS almacena la dirección de inicio del segmento de código.
Segmento de datos: contiene datos, constantes y áreas de trabajo. Un registro de segmento de datos de 16 bits o un registro DS almacena la dirección de inicio del segmento de datos.
Segmento de pila: contiene datos y direcciones de retorno de procedimientos o subrutinas. Se implementa como una estructura de datos de 'pila'. El registro de Segmento de pila o el registro de SS almacena la dirección inicial de la pila.
0 comentarios:
Publicar un comentario