Indice
1.
Concepto general
2. Registros de
segmento.
4. Registros de
propósitos generales.
5. Registro
índice.
1. Concepto
general
Los registros del
procesador se
emplean para controlar instrucciones en ejecución, manejar
direccionamiento de memoria y
proporcionar capacidad aritmética. Los registros son
espacios físicos dentro del microprocesador
con capacidad de 4 bits hasta 64 bits dependiendo del microprocesador
que se emplee. Los registros son direccionables por medio de una
viñeta, que es una dirección de memoria. Los
bits, por conveniencia, se numeran de derecha a izquierda
(15,14,13…. 3,2,1,0), los registros están divididos
en seis grupos los cuales
tienen un fin especifico. Los registros se dividen en:
- Registros de segmento
- Registros de apuntadores de instrucciones
- Registros apuntadores
- Registros de propósitos generales
- Registro índice
- Registro de bandera.
2. Registros de
segmento.
Un registro de
segmento se utiliza para alinear en un limite de párrafo
o dicho de otra forma codifica la dirección de inicio de cada segmento y su
dirección en un registro de
segmento supone cuatro bits 0 a su derecha.
Un registro de segmento tiene 16 bits de longitud y facilita un
área de memoria para direccionamientos conocidos como el
segmento actual. Los registros de segmento son:
- Registro CS
- Registro DS
- Registro SS
- Registro ES
- Registro FS y GS
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, mas un valor de
desplazamiento en el registro de apuntado de instrucción
(IP), indica la
dirección de una instrucción que es buscada para
sí ejecución. Para propósito de programación normal, no e necesita
referenciar el registro CS.
Registro DS.
La dirección inicial de un segmento de datos de programa es
almacenada en el registro DS. En términos sencillos, esta
dirección, mas un valor de
desplazamiento en una instrucción, genera una referencia a
la localidad de un bytes especifico 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 (datos de caracteres) utilizan el registro
esta de segmento para manejar el direccionamiento de memoria. En
este contexto, el registro ES esta asociado con el registro DI
(índice) . un programa que requiere el uso del registro ES
puede inicializarlo con una dirección
apropiada.
Registros FS y GS.
Son registros extra de segmento en los procesadores
80386y posteriores a estos procesadores.
3. Registro Apuntador de instrucciones.(IP)
El registro apuntador de
instrucciones (IP) de 16 bits contiene el desplazamiento de
dirección de la siguiente instrucción que se
ejecuta.
El registro 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.
En el ejemplo siguiente, el registro CS contiene 25A4[0]H y el IP
contiene 412H. Para encontrar la siguiente instrucción que
será ejecutada el procesados combina las direcciones en el
CS y el IP así:
Segmento de dirección en el registro CS: 25A40H
Desplazamiento de dirección en el registro IP: +
412H
Dirección de la siguiente
instrucción: 25E52H
Registros apuntadores.
Los registros apuntadores están asociados con el registro
SS y permiten al procesador
accesar datos en el segmento de pila los registros apuntadores
son dos:
- El registro SP
- El registro BP
Registro SP.
El apuntador de pila IP de 16 bits esta asociado con el registro
SS y proporciona un valor de desplazamiento que se refiere a la
palabra actual que esta siendo procesada en la pila.
El ejemplo siguiente el registro SS contiene la dirección
de segmento 27B3[0]H y el SP el desplazamiento 312H Para
encontrar la palabra actual que esta siendo procesada en la pila
el microprocesador combina las direcciones en el SS y el PP:
Dirección de segmento en el registro SS: 27B30H
Desplazamiento en el registro SP: +
312H
Dirección en la Pila: 27E42H
……. |
27B3[0]H 312H
Dirección del segmento SS Desplazamiento del
SP
Registro BP.
El registro BP de 16 bits facilita la referencia de
parámetros, los cuales son datos y direcciones
transmitidos vía lapida.
4. Registros de
propósitos generales.
Los registros de
propósitos generales AX, BX, CX y DX son los caballos de
batalla o las herramientas
del sistema. Son los
únicos en el sentido de que se puede direccionarlos como
una palabra o como una parte de un byte. El ultimo byte de la
izquierda es la parte "alta", y el ultimo byte de la derecha es
la parte "baja" por ejemplo, el registro CX consta de una parte
CH (alta) y una parte CL (baja), y usted puede referirse a
cualquier parte por si nombre. Ñas instrucciones
siguientes mueven ceros a los registros CX, CH y CL
respectivamente.
Mov CX, 00
Mov CH, 00
Mov CL, 00
Los procesadores 80386 y posteriores permiten el uso de todos
registros de propósito general, mas versiones de 32 bits;
EAX, EBX y EDCX.
Registros AX.
El registro AX, el acumulador principal, es utilizado para
operaciones
que implican entrada/salida y la mayor parte de la
aritmética. Por ejemplo, las instrucciones para
multiplicar, dividir y traducir suponen el uso del AX.
También, algunas operaciones generan código
más eficientes si se refiere al AX en lugar de los otros
registros.
Registro BX.
El BX es conocido como el registro base ya que es el único
registro de propósitos generales que pueden ser unos
índices para direccionamiento indexado. También es
común emplear al BX para cálculos.
Registro CX.
El 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, hacia la derecha o
hacia la izquierda. El CX también es usado para muchos
cálculos.
Registro DX.
El DX es conocido como el registro de datos. Algunas operaciones
de entrada/salida requieren su uso, y las operaciones de
multiplicación y división con cifras grandes
suponen al DX y al AX trabajando juntos. Puede usar los registros
de propósitos para suma y resta de cifras de 8, 16, 32
bits.
5. Registro
índice.
Los registros SI y DI están
disponibles para direccionamientos indexados y para sumas y
restas. Que son la operaciones de punta.
Registro SI.
El registro índice de 16 bits es requerido por algunas
operaciones con cadenas (de caracteres). En este contexto, el SI
está asociado con el registro DS. Los procesadores 80386 y
posteriores permiten el uso de un registro ampliado a 32 bits, el
ESI.
Registro DI.
El registro índice destino también es requerido por
algunas operaciones con cadenas de caracteres. En este contexto,
el Di está asociado con el registro ES. Los procesadores
80386 y posteriores permiten el uso de un registro ampliado a 32
bits, el EDI.
Registro de bandera.
Los registros de banderas sirven parar indicar el estado
actual de la maquina y el resultado del procesamiento, Cuando
algunas instrucciones piden comparaciones o cálculos
aritméticos cambian el estado de las
banderas.
Las banderas están en el registro de banderas en las
siguientes posiciones:
bits 15 14 13 12 11 10 9 8 7 6 5
4 3 2 1
O | D | I | T | S | Z | A | P | C |
Bandera
Las banderas mas comunes son las siguientes:
OF (Over flow flag, desbordamiento).
Indica el desbordamiento de un bit de orden alto (mas a la
izquierda) después de una operación
aritmética.
DF (Direction flag, Direccion).
Designa la dirección hacia la izquierda o hacia la derecha
para mover o comparar cadenas de caracteres.
IF (Interruption flag, Interrupcion).
Indica que una interrupción externa, como la entrada desde
el teclado sea
procesada o ignorada.
TF (Trap flag, Trampa).
Examina el efecto de una instrucción sobre los registros y
la memoria.
Los programas
depuradores como DEBUG, activan esta bandera de manera que pueda
avanzar en la ejecución de una sola interrupción a
un tiempo.
SF (Sign flag, Signo).
Contiene el signo resultante de una operación
aritmética (0=positivo y 1= negativo).
ZF (Zero flag, Zero).
Indica el resultado de una operación aritmética o
de comparación (0= resultado diferente de cero y
1=resultado igual a cero).
AF (Auxiliary carry flag, Acarreo auxiliar).
Contiene un acarreo externo del bit 3 en un dato de 8 bits, para
aritmética especializada
PF (Parity flag, Paridad).
Indica paridad par o impar de una operación en datos de
ocho bits de bajo orden (mas a la derecha).
CF (Carry flag, Acarreo).
Contiene el acarreo de orden mas alto (mas a la izquierda)
después de una operación aritmética;
también lleva el contenido del ultimo bit en una
operación de corrimiento o rotación.
Cuadro Comparativo
TIPOS DE REGISTROS | FUNCION |
Registros de Segmento | Un registro de segmento tiene 16 bits de |
Registros de Apuntador de | Este registro esta compuesto por 16 bits y |
Registros Apuntadores | Permiten al sistema accesar datos al segmento de la |
Registros de Propósito General | Son los caballos de batalla del sistema y pueden |
Registros Indices | Sirven para el direccionamiento de indexado y |
Registros de Banderas | Sirven para indicar el |
Ejemplo De Representacion De Los Registros
Después de haber conceptualizado e interpretado los
diferente tipos de registro nos vemos en la necesidad de dar un
ejemplo no muy practico pero si muy significativo en el cual se
representan la forma estructurada de un programa en el lenguaje
ensamblador y como se utilizan los diferentes termino que
hemos investigado vemos que en el programa o en una
pequeña porción de él se muestran como se
colocan dentro los diferentes tipos registros.
TITLE P17HANRD(EXE) Lectura
secuencial de registros.
.MODEL SMALL
.STACK 64
/——————————————————————————————
,DATA
ENDCDE DB 00 ; FIN DEL INDICARDOR DE PROCESO.
HANDLE DW ?
IOAREA DB 32 DUP(´ ´)
OPENMSG DB ´*** Open error ***´ 0DH, 0AH
PATHNAM DB ´D:NAMEFILE.SRT´, 0
READMSD DB ´*** Read error ***´ 0DH, 0AH
ROW DB 00
/———————————————————————————————
.CODE
BEGIN PROC FAR
MOV AX,@data ; inicializa
MOV DS,AX ; registro de
MOV ES,AX ; segmento
MOV AX,0600H
Autor:
Oscar borja