You are on page 1of 5

Registros

Registros de propósito general

AH

BHALAX
BL BX (Base)
(Acumulador)
CH CL CX (Contador)
DH DL DX (Datos)
Registros
índices
SI
Source Index (Índice origen)DI Destination Index (Índice Destino)
BP Base Pointer (Puntero Base)
SP Stack Pointer (Puntero de Pila)
Registro de Bandera
-ODITSZ-A-P-CFlags (Banderas)-
R
e
gi
st
r
o
s
d
e
S
e
g
m
e
n
t
o
s-
-
CS
Code Segment (Segmento de
Data Segment (Segmento de Datos)
Código)DS
ES ExtraSegment (Segmento Extra)
SS Stack Segment (Segmento de Pila)
Registro apuntador de
instrucciones
IP
Instruction Pointer
Modelo de los registros

Los registros del i8086 e i8088 se basaron en el diseño del Intel 8080 y el Intel 8085, y de
hecho son compatibles a nivel de ensamblador con el i8080. El conjunto de registros
también es similar al del i8080, pero ampliados a 16 bits. Tanto el i8086 como el i8088
tienen cuatro registros generales de 16 bits, que también pueden ser accedidos como ocho
registros de 8 bits, y tienen cuatro registros índice de 16 bits (incluyendo el puntero de
pila). Los registros de datos se usan a veces de forma implícita por las instrucciones,
haciendo más difícil la organización de los registros para emplearlos con valores
temporales.

Los registros del procesador, se dedican a almacenar posiciones de memoria ya que el


acceso a los registros es mucho mas rápido que los accesos a memoria, y se emplean para
controlar instrucciones en ejecución, manejar direccionamiento de memoria y proporcionar
capacidad aritmética. Los registros son direccionables por medio de un nombre.

[editar] Registros de Propósito General

Los registros de propósito general AX, BX, CX, EX y DX son los caballos de fuerza del
sistema. Son únicos en el sentido de que se les puede direccionar como una palabra o como
un byte. Dado que estos registros se pueden utilizar "como deseamos" (dentro de la
tipologia de los datos), existe una definición para cada uno de ellos según la función que
desarrollen y es recomendable utilizar-los adecuadamente según esa definición , ya que
algunas instrucciones del procesador 8086 se utilizan solamente para un registro específico,
optimizando así el código.

Registro AX: El registro AX es el registro acumulador, es utilizado para operaciones que


implican entrada/salida y la mayor parte de la aritmética.

Registro BX: El registro BX es el registro base, y es el único registro de propósito general


que puede ser un índice para direccionamiento indexado. También es común emplear el BX
para cálculos.

Registro CX: El registro CX es conocido como el registro contador. Puede contener un


valor para controlar el número de veces que un ciclo se repite o un valor para corrimiento
de bits.

Registro DX: El registro DX es el registro de datos. Algunas operaciones de entrada/salida


requieren su pulso, y las operaciones de multiplicación y división con cifras grandes
suponen al DX y AX trabajando juntos.

[editar] Registros Índice

Los registros SI y DI disponibles para direccionamiento indexado y para sumas y restas.


Registro SI: El registro índice fuente de 16 bits es requerido por algunas operaciones con
cadenas de caracteres. El SI está asociado con el registro DS.

Registro DI: El registro índice destino también es requerido por algunas operaciones con
cadenas de caracteres. El DI está asociado con el registro ES.

[editar] Registros Apuntadores

Los registros SP (apuntador de pila) y BP (apuntador base) están asociados con el registro
SS y permiten al sistema acceder a datos en el segmento de la pila.

Registro SP: El apuntador de pila de 16 bits está asociado con el registro SS y proporciona
un valor de desplazamiento que se refiere a la palabra actual que está siendo procesada en
la pila. El sistema maneja de manera automática este registro.

Registro BP: El apuntador base de 16 bits facilita la referencia de parámetros, los cuales
son datos y direcciones transmitidos vía la pila.

[editar] Registros de Banderas

Es un registro de 16 bits, de los cuales nueve sirven para indicar el estado actual de la
máquina y el resultado del procesamiento. Muchas instrucciones aritméticas y de
comparación cambian el estado de las banderas y apoyándose de ellas determinan la acción
subsecuente. Veamos como se reparten y que bits son los que sirven para indicar el estado
actual de la máquina tal y como hemos comentado anteriormente:

Debemos tener en cuenta que esta tabla contiene 16 posiciones (de 0 a 15), que son los 16
bits del registro de banderas y que por convenio los bits de un registro se ordenan de
derecha a izquierda, es decir, la posición 0 la encontraremos a la derecha y la posición 15 a
la izquierda.

- - - - OF DF IF TF SF ZF - AF - PF - CF

Los bits de las banderas son las siguientes:


OF (overflow, desbordamiento): Indica desbordamiento del bit de mayor orden después de
una operación aritmética de números con signo (1=existe overflow; 0=no existe overflow).
Para operaciones sin signo, no se toma en cuenta esta bandera.

DF (dirección): Controla la selección de incremento o decremento de los registros SI o DI


en las operaciones con cadenas de caracteres (1=decremento automático; 0=incremento).
La bandera DF se controla con las instrucciones STD y CLD.

IF (interrupción): Indica que una interrupción externa sea procesada o ignorada


(1=habilita la interrupción; 0=deshabilita la interrupción). El estado de la bandera IF se
controla con las instrucciones STI y CLI.

TF (trampa): Permite la operación del procesador en modo de depuración (paso a paso)

SF (signo): Contiene el signo resultante de una operación aritmética (0=positivo;


1=negativo).

ZF (cero): Indica el resultado de una operación aritmética o de comparación (0=resultado


diferente de cero; 1=resultado igual a cero).

AF (acarreo auxiliar): Contiene un acarreo externo del bit 3 en un dato de 8 bits, para
aritmética especializada. Esta bandera se prueba con las instrucciones DAA y DAS para
ajustar el valor de AL después de una suma o resta BCD.

PF (paridad): Indica paridad par o impar en una operación de datos de ocho bits
(0=paridad impar; 1=paridad par).

CF (acarreo): Contiene el acarreo de los bits de mayor orden después de una operación
aritmética; también almacena el contenido del último bit en una operación de corrimiento o
de rotación.

[editar] Registros de Segmento

Definen áreas de 64 Kb dentro del espacio de direcciones de 1 Mb del 8086. Estas áreas
pueden solaparse total o parcialmente. No es posible acceder a una posición de memoria no
definida por algún segmento: si es preciso, habrá de moverse alguno.

Registro CS: El DOS almacena la dirección inicial del segmento de código de un programa
en el registro CS. Esta dirección de segmento, más un valor de desplazamiento en el
registro apuntador de instrucción (IP), indica la dirección de una instrucción que es buscada
para su ejecución. Para propósitos de programación normal, no se necesita referenciar el
registro CS.

Registro DS: La dirección inicial de un segmento de datos de programa es almacenada en


el registro DS. Esta dirección, más un valor de desplazamiento en una instrucción, genera
una referencia a la localidad de un byte específico en el segmento de datos.
Registro SS: El registro SS permite la colocación en memoria de una pila, para
almacenamiento temporal de direcciones y datos. El DOS almacena la dirección de inicio
del segmento de pila de un programa en el registro SS. Esta dirección de segmento, más un
valor de desplazamiento en el registro del apuntador de la pila (SP), indica la palabra actual
en la pila que está siendo direccionada. Para propósitos de programación normal, no se
necesita referenciar el registro SS.

Registro ES: Algunas operaciones con cadenas de caracteres utilizan el registro extra de
segmento para manejar el direccionamiento de memoria. El registro ES está asociado con el
registro DI (Índice). Un programa que requiere el uso del registro ES puede inicializarlo
con una dirección de segmento fgdf]] de 64 Kbytes e interrupciones vectorizadas fijas. La
mayoría de las instrucciones solo pueden acceder a una posición de memoria, por lo que un
operando debe ser forzosamente un registro. El resultado se almacena en uno de los
operandos.

Los i8086 e i8088 presentan cuatro registros de segmento (CS, DS, ES y SS), que se
pueden establecer a partir de los registros índice. Debido a que estos procesadores pueden
direccionar hasta 1 MB de memoria, para lo que son necesarios 20 bits, ya que sus registros
son de 16 bits, es necesario emplear registros de segmento para acceder a toda la memoria.
En lugar de suministrar los bits faltantes, como la mayoría de los procesadores
segmentados, el i8086 y el i8088 desplazan un registro de segmento 4 bits hacia la
izquierda y lo suman a la dirección de memoria, siendo el resultado la dirección efectiva.
Esto suele ser considerado como un mal diseño, aunque puede ser aceptable, e incluso útil
en el lenguaje ensamblador. Por el contrario, provoca confusión cuando se hace un uso
extensivo de los punteros (como en el lenguaje C), debido a que es posible que dos
punteros con diferentes valores apunten a la misma dirección de memoria. Peor aún, este
esquema de registros solapados hace difícil expandir el mapa de memoria a más de 1 MB, y
de hecho, esto se cambió en el Intel 80286.

[editar] Patillaje

You might also like