LE 03 - Registros

Descargar como pptx, pdf o txt
Descargar como pptx, pdf o txt
Está en la página 1de 11

Lenguaje Ensamblador

Registros
Primer Parcial
Registros
Mayormente las operaciones del procesador involucran datos. Estos datos pueden
ser guardados en la memoria y accedidos de ahí mismo. Este proceso le pega al
desempeño del procesador debido a que debe hacer transacciones que control el
flujo de información a través de los buses.
Para acelerar estos procesos el procesador tiene memoria interna llamada
registros.
Los registros procesan información sin tener que salir del procesador, están
limitados en cantidad y existen dentro del procesador como parte de su diseño.
Registros del procesador
Hay 10 registros de 32-bit y 6 16-bit en una arquitectura de 32 bits. Los registros se
agrupan en las siguientes categorías:
Registros Generales,
Registros de Control,
Registros de Segmentos.

Los registros generales se dividen en los siguientes grupos.


Registros de Datos,
Registros de Punteros
Registros Indices.
Registros de uso general
• Los registros de uso general son AX, BX, CX y DX cada uno de 16 bits, éstos a su
vez se dividen en otros dos de 8 bits cada uno. Para el AX están el AH y AL (‘H’ es
el byte alto y ‘L’ el bajo). Lo mismo aplica en los demás registros de 16, BX se
divide en BH y BL, CX en CH y CL y DX en DH y DL.
• AX. Es el acumulador principal, utilizado en operaciones
aritméticas y las que impliquen entrada/salida.
• BX. Conocido como el registro base ya que se puede usar
como índice. También usado para cálculos.
• CX. Registro contador. Controla el número de veces que un
ciclo se repite o para corrimiento de bits hacia la derecha o a
la izquierda. También usado para varios cálculos.
• DX. Registro de datos. Trabaja junto al AX en operaciones de
multiplicación y división con cifras grandes.
• SI y DI. Source Index y Destination Index. Son dos registros con
propósitos muy especiales. Pueden ser usados como punteros o
apuntadores (como el BX) para accesar indirectamente a memoria o
como indices. También se pueden usar con instrucciones de cadena
cuando se quiera procesar los carácteres de la cadena.
• BP. Base Pointer. Es similar al registro bx. Generalmente se usa este
registro para accesar a parámetros y variables locales en un
procedimiento o función.
• SP. Stack Pointer. Tiene un propósito muy especial, mantener
el stack o pila del programa. Normalmente no se debería
usar este registro para cálculos aritméticos.
Registros de segmento

• CS: Code Segment, Segmento de código o instrucciones de programa.


• DS: Data Segment, Segmento de datos o de variables.
• SS: Stack Segment, Segmento de Pila
• ES: Segmento de Destino.
• FS, GS: Segmentos extras. Sin uso definido y usualmente reservados al
sistema operativo.
Registros de control
• EIP: Instrucción Pointer: Apuntador de instrucciones contiene la
dirección de la siguiente instrucción a ejecutar. Ciertas instrucciones
de máquina manipulan a EIP, para que el programa se bifurque hacia
una nueva ubicación.
• EFLAGS (o simplemente Flag) consiste en bits binarios individuales
que controlan la operación de la CPU, o que reflejan el resultado de
alguna operación de la CPU. Algunas instrucciones evalúan y
manipulan las banderas individuales del procesador.
• Una bandera se activa cuando es igual a 1; se desactiva (o borra)
cuando es igual a 0.
El EIP y el EFLAG son considerados registros de control.
Muchas instrucciones involucran comparaciones y calculos matematicos que cambian el status de
las banderas y algunas instrucciones condicionales.
Los principales bits del registro de bandera son:
Overflow Flag (OF) − Indica si hubo un sobreflujo en operaciones aritméticas con signo.
Direction Flag (DF) − Determina hacia donde se recorre un arreglo en operaciones de cadena. Un 0
recorre de arriba hacia abajo y un 1 de abajo hacia arriba.
Interrupt Flag (IF) − Activa o desactiva las interrupciones. Deshabilita cuando el valor es 0 y habilita
cuando el valor es 1.
Trap Flag (TF) − Se usa en operaciones de paso simple. Se puede usar para crear breakpoints en
modo debug o ejecución de paso por paso.
Sign Flag (SF) − muestra el resultado de signo de una operación aritmetica. Un resultado positivo
borra el valor de SF y un resultado negativo lo pone en 1.
Zero Flag (ZF) − Un resultado diferente de cero lo pone en 0, y un resultado de cero lo pone en 1.
Carry Flag (CF) − Contiene el acarreo de una operación aritmética, también almacena el bit de
transferencia en instrucciones de corrimiento.
Auxiliary Carry Flag (AF) − Es igual que el CF pero a nivel de nibble.
Parity Flag (PF) − Indica si el numero de 1 en un resultado es par o impar. Un numero par lo pone en
0 y un numero impar lo pone en 1.

También podría gustarte