Registros de procesador.docx

23
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 direccionales 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 específico. 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 límite 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, más 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 su ejecución. Para propósito 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. En términos sencillos, esta dirección, más 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.

Transcript of Registros de procesador.docx

Page 1: Registros de procesador.docx

Concepto generalLos registros del procesador se emplean para controlar instrucciones en ejecucioacuten manejar direccionamiento de memoria y proporcionar capacidad aritmeacutetica Los registros son espacios fiacutesicos dentro del microprocesador con capacidad de 4 bits hasta 64 bits dependiendo del microprocesador que se emplee Los registros son direccionales por medio de una vintildeeta que es una direccioacuten de memoria Los bits por conveniencia se numeran de derecha a izquierda (151413hellip 3210) los registros estaacuten divididos en seis grupos los cuales tienen un fin especiacutefico Los registros se dividen en

Registros de segmento Registros de apuntadores de instrucciones Registros apuntadores Registros de propoacutesitos generales Registro iacutendice Registro de bandera

2 Registros de segmentoUn registro de segmento se utiliza para alinear en un liacutemite de paacuterrafo o dicho de otra forma codifica la direccioacuten de inicio de cada segmento y su direccioacuten en un registro de segmento supone cuatro bits 0 a su derechaUn registro de segmento tiene 16 bits de longitud y facilita un aacuterea 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 CSEl DOS almacena la direccioacuten inicial del segmento de coacutedigo de un programa en el registro CS Esta direccioacuten de segmento maacutes un valor de desplazamiento en el registro de apuntado de instruccioacuten (IP) indica la direccioacuten de una instruccioacuten que es buscada para su ejecucioacuten Para propoacutesito de programacioacuten normal no se necesita referenciar el registro CSRegistro DSLa direccioacuten inicial de un segmento de datos de programa es almacenada en el registro DS En teacuterminos sencillos esta direccioacuten maacutes un valor de desplazamiento en una instruccioacuten genera una referencia a la localidad de un bytes especifico en el segmento de datosRegistro SSEl registro SS permite la colocacioacuten en memoria de una pila para almacenamiento temporal de direcciones y datos El DOS almacena la direccioacuten de inicio del segmento de pila de un programa en el registro SS Esta direccioacuten de segmento maacutes un valor de desplazamiento en el registro del apuntador de la pila (SP) indica la palabra actual en la pila que estaacute siendo direccionada Para propoacutesitos de programacioacuten normal no se necesita referenciar el registro SSRegistro ESAlgunas 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 estaacute asociado con el registro DI (iacutendice) Un programa que requiere el uso del registro ES puede inicializarlo con una direccioacuten apropiadaRegistros FS y GSSon 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 direccioacuten de la siguiente instruccioacuten que se ejecuta El registro IP estaacute asociado con el registro CS en el sentido de que el IP indica la instruccioacuten actual dentro del segmento de coacutedigo que se estaacute ejecutando actualmente En el ejemplo siguiente el registro CS contiene 25A4[0]H y el IP contiene 412H Para encontrar la siguiente instruccioacuten que seraacute ejecutada el procesado combina las direcciones en el CS y el IP asiacuteSegmento de direccioacuten en el registro CS 25A40HDesplazamiento de direccioacuten en el registro IP + 412HDireccioacuten de la siguiente instruccioacuten 25E52H

Registros apuntadoresLos registros apuntadores estaacuten 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 estaacute asociado con el registro SS y proporciona un valor de desplazamiento que se refiere a la palabra actual que estaacute siendo procesada en la pilaEl ejemplo siguiente el registro SS contiene la direccioacuten de segmento 27B3[0]H y el SP el desplazamiento 312H Para encontrar la palabra actual que estaacute siendo procesada en la pila el microprocesador combina las direcciones en el SS y el PPDireccioacuten de segmento en el registro SS 27B30HDesplazamiento en el registro SP + 312HDireccioacuten en la Pila 27E42H

helliphellip27B3[0]H 312H

Direccioacuten del segmento SS Desplazamiento del SP

Registro BPEl registro BP de 16 bits facilita la referencia de paraacutemetros los cuales son datos y direcciones transmitidos viacutea lapida

4 Registros de propoacutesitos generalesLos registros de propoacutesitos generales AX BX CX y DX son los caballos de batalla o las herramientas del sistema Son los uacutenicos en el sentido de que se puede direccionarlos como una palabra o como una parte de un byte El uacuteltimo byte de la izquierda es la parte alta y el uacuteltimo 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 Las instrucciones siguientes mueven ceros a los registros CX CH y CL respectivamenteMov CX 00Mov CH 00ov CL 00Los procesadores 80386 y posteriores permiten el uso de todos registros de propoacutesito general mas versiones de 32 bits EAX EBX y EDCX

Registros AXEl registro AX el acumulador principal es utilizado para operaciones que implican entradasalida y la mayor parte de la aritmeacutetica Por ejemplo las instrucciones para multiplicar dividir y traducir suponen el uso del AX Tambieacuten algunas operaciones generan coacutedigo maacutes eficientes si se refiere al AX en lugar de los otros registrosRegistro BXEl BX es conocido como el registro base ya que es el uacutenico registro de propoacutesitos generales que pueden ser unos iacutendices para direccionamiento indexado Tambieacuten es comuacuten emplear al BX para caacutelculosRegistro CXEl CX es conocido como el registro contador Puede contener un valor para controlar el nuacutemero de veces que un ciclo se repite o un valor para corrimiento de bits hacia la derecha o hacia la izquierda El CX tambieacuten es usado para muchos caacutelculosRegistro DXEl DX es conocido como el registro de datos Algunas operaciones de entradasalida requieren su uso y las operaciones de multiplicacioacuten y divisioacuten con cifras grandes suponen al DX y al AX trabajando juntos Puede usar los registros de propoacutesitos para suma y resta de cifras de 8 16 32 bits

5 Registro iacutendiceLos registros SI y DI estaacuten disponibles para direccionamientos indexados y para sumas y restas Que son las operaciones de punta

Registro SIEl registro iacutendice de 16 bits es requerido por algunas operaciones con cadenas (de caracteres) En este contexto el SI estaacute asociado con el registro DS Los procesadores 80386 y posteriores permiten el uso de un registro ampliado a 32 bits el ESIRegistro DIEl registro iacutendice destino tambieacuten es requerido por algunas operaciones con cadenas de caracteres En este contexto el Di estaacute asociado con el registro ES Los procesadores 80386 y posteriores permiten el uso de un registro ampliado a 32 bits el EDI

Registro de banderaLos registros de banderas sirven parar indicar el estado actual de la maacutequina y el resultado del procesamiento Cuando algunas instrucciones piden comparaciones o caacutelculos aritmeacuteticos cambian el estado de las banderasLas banderas estaacuten en el registro de banderas en las siguientes posicionesbits 15 14 13 12 11 10 9 8 7 6 54 3 2 1

O D I T S Z A P C

BanderaLas banderas maacutes comunes son las siguientesOF (Over flow flag desbordamiento)Indica el desbordamiento de un bit de orden alto (mas a la izquierda) despueacutes de una operacioacuten aritmeacuteticaDF (Direction flag Direccion)Designa la direccioacuten hacia la izquierda o hacia la derecha para mover o comparar cadenas de caracteresIF (Interruption flag Interrupcion)Indica que una interrupcioacuten externa como la entrada desde el teclado sea procesada o ignoradaTF (Trap flag Trampa)Examina el efecto de una instruccioacuten sobre los registros y la memoria Los programas depuradores como DEBUG activan esta bandera de manera que pueda avanzar en la ejecucioacuten de una sola interrupcioacuten a un tiempoSF (Sign flag Signo)Contiene el signo resultante de una operacioacuten aritmeacutetica (0=positivo y 1= negativo)ZF (Zero flag Zero)Indica el resultado de una operacioacuten aritmeacutetica o de comparacioacuten (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 aritmeacutetica especializadaPF (Parity flag Paridad)Indica paridad par o impar de una operacioacuten 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) despueacutes de una operacioacuten aritmeacutetica tambieacuten lleva el contenido del ultimo bit en una operacioacuten de corrimiento o rotacioacutenCuadro ComparativoTIPOS DE REGISTROS FUNCION

Registros de Segmento Un registro de segmento tiene 16 bits de longitud y facilita un aacuterea de memoria para el direccionamiento conocida como el segmento actual

Registros de Apuntador de Instrucciones Este registro esta compuesto por 16 bits y contiene el desplazamiento de la siguiente instruccioacuten que se va a ejecutar Los procesadores 80386 y posteriores tiene un IP ampliado de 32 bits llamado EIP

Registros Apuntadores Permiten al sistema accesar datos al segmento de la pila Los procesadores 80386 tiene un apuntador de pila de 32 bits llamado ESP El sistema maneja de manera automaacutetica estos registros

Registros de Propoacutesito General Son los caballos de batalla del sistema y pueden ser direccionados como una palabra o como una parte de un bytes Los procesadores 80386 y posteriores permiten el uso de todos los registros de propoacutesitos general mas sus versiones ampliadas de 32 bits llamados EAX EBXECX y EDX

Registros Indices Sirven para el direccionamiento de indexado y para las operaciones de sumas y restas

Registros de Banderas Sirven para indicar el estado actual de la maquina y el resultado del procesamiento De los 16 bits de registro de bandera 9 son comunes a toda la familia de los procesadores 8086

Ejemplo De Representacioacuten De Los RegistrosDespueacutes de haber conceptualizado e interpretado los diferente tipos de registro nos vemos en la necesidad de dar un ejemplo no muy praacutectico 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 pequentildea porcioacuten de eacutel se muestran como se colocan dentro los diferentes tipos registros TITLE P17HANRD(EXE) Lectura secuencial de registrosMODEL SMALLSTACK 64------------------------------------------------------------------------------------------DATAENDCDE DB 00 FIN DEL INDICARDOR DE PROCESOHANDLE DW IOAREA DB 32 DUP(acute acute)

OPENMSG DB acute Open error acute 0DH 0AHPATHNAM DB acuteDNAMEFILESRTacute 0READMSD DB acute Read error acute 0DH 0AHROW DB 00---------------------------------------------------------------------------------------------CODEBEGIN PROC FARMOV AXdata inicializaMOV DSAX registro deMOV ESAX segmentoMOV AX0600H Autor

Oscar borja

Leer maacutes httpwwwmonografiascomtrabajos7regiregishtmlixzz3YhKCX7bC

Registros de un microprocesadorEn arquitectura de ordenadores un registro es una memoria de alta velocidad y poca capacidad integrada en el microprocesador que permite guardar transitoriamente y acceder a valores muy usados generalmente en operaciones matemaacuteticasLos registros estaacuten en la cumbre de la jerarquiacutea de memoria y son la manera maacutes raacutepida que tiene el sistema de almacenar datos Los registros se miden generalmente por el nuacutemero de bits que almacenan por ejemplo un registro de 8 bits o un registro de 32 bits Los registros generalmente se implementan en un banco de registros pero antiguamente se usaban biestables individuales memoria SRAMo formas aun maacutes primitivasEl teacutermino es usado generalmente para referirse al grupo de registros que pueden ser directamente indexados como operandos de una instruccioacuten como estaacute definido en el conjunto de instrucciones Sin embargo los microprocesadores tienen ademaacutes muchos otros registros que son usados con un propoacutesito especiacutefico como el contador de programa Por ejemplo en la arquitectura IA32 el conjunto de instrucciones define 8 registros de 32 bits

Tipos de registro

Los registros de datos son usados para guardar nuacutemeros enteros En algunas computadoras antiguas existiacutea un uacutenico registro donde se guardaba toda la informacioacuten llamado acumulador

Los registros de memoria son usados para guardar exclusivamente direcciones de memoria Eran muy usados en la arquitectura Harvard ya que muchas veces las direcciones teniacutean un tamantildeo de palabra distinto que los datos

Los registros de propoacutesito general (en ingleacutes GPRs o General Purpose Registers) pueden guardar tanto datos como direcciones Son fundamentales en la arquitectura de von Neumann La mayor parte de las computadoras modernas usa GPR

Los registros de coma flotante son usados para guardar datos en formato de coma flotante Los registros constantes tienen valores creados por hardware de soacutelo lectura Por ejemplo en MIPS el registro cero

siempre vale 0 Los registros de propoacutesito especiacutefico guardan informacioacuten especiacutefica del estado del sistema como el puntero de pila o

el registro de estado

REGISTROS DEL PROCESADORLos registros del procesador se emplean para controlar instrucciones en ejecucioacuten manejar direccionamiento de memoria y proporcionar capacidad aritmeacutetica Los registros son direccionables por medio de un nombre Los bits por convencioacuten se numeran de derecha a izquierda como en 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0Los registros internos del procesador se puede clasificar en 6 tipos diferentes Registros de segmento

1 Registros de propoacutesito general2 Registros de apuntadores

3 Registros de banderas4 Registros de Puntero de instruccioacuten5 Registros de Pila

Registros de segmento Un registro de segmento tiene 16 bits de longitud y facilita un aacuterea de memoria para direccionamiento conocida como el segmento actualRegistro CS El DOS almacena la direccioacuten inicial del segmento de coacutedigo de un programa en el registro CS Esta direccioacuten de segmento mas un valor de desplazamiento en el registro apuntador de instruccioacuten (IP) indica la direccioacuten de una instruccioacuten que es buscada para su ejecucioacutenRegistro DS La direccioacuten inicial de un segmento de datos de programa es almacenada en el registro DS En teacuterminos sencillos esta direccioacuten mas un valor de desplazamiento en una instruccioacuten genera una referencia a la localidad de un byte especifico en el segmento de datosRegistro SS El registro SS permite la colocacioacuten en memoria de una pila para almacenamiento temporal de direcciones y datos El DOS almacena la direccioacuten de inicio del segmento de pila de un programa en le registro SS Esta direccioacuten de segmento mas un valor de desplazamiento en el registro del apuntador de pila (SP) indica la palabra actual en la pila que esta siendo direccionadaRegistros ES Alguna operaciones con cadenas de caracteres (datos de caracteres) utilizan el registro extra de segmento para manejar el direccionamiento de memoria En este contexto el registro ES esta asociado con el registro DI (iacutendice) Un programa que requiere el uso del registro ES puede inicializarlo con una direccioacuten de segmento apropiadaRegistros FS y GS Son registros extra de segmento en los procesadores 80386 y posteriores

Registros de propoacutesito general Los registros de propoacutesito general AX BX CX y DX son los caballos de batalla del sistema Son uacutenicos 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 su nombreRegistro AX El registro AX el acumulador principal es utilizado para operaciones que implican entradasalida y la mayor parte de la aritmeacutetica Por ejemplo las instrucciones para multiplicar dividir y traducir suponen el uso del AX Tambieacuten algunas operaciones generan coacutedigo mas eficiente si se refieren al AX en lugar de a los otros registrosRegistro BX El BX es conocido como el registro base ya que es el uacutenico registro de propoacutesito general que puede ser iacutendice para direccionamiento indexado Tambieacuten es comuacuten emplear el BX para caacutelculosRegistro DX El DX es conocido como l registro de datos Alguna operaciones de entradasalida requieren uso y las operaciones de multiplicacioacuten y divisioacuten con cifras grandes suponen al DX y al AX trabajando juntos

Registro de Apuntador de Instrucciones El registro apuntador de instrucciones (IP) de 16 bits contiene el desplazamiento de direccioacuten de la siguiente instruccioacuten que se ejecuta El IP esta asociado con el registro CS en el sentido de que el IP indica la instruccioacuten actual dentro del segmento de coacutedigo que se esta ejecutando actualmente Los procesadores 80386 y posteriores tienen un IP ampliado de 32 bits llamado EIPEn el ejemplo siguiente el registro CS contiene 25A4[0]H y el IP contiene 412H Para encontrar la siguiente instruccioacuten que seraacute ejecutada el procesador combina las direcciones en el CS y el IPSegmento de direccioacuten en el registro CS 25A40H Desplazamiento de direccioacuten en el registro IP + 412H Direccioacuten de la siguiente instruccioacuten 25E52H

Registros Apuntadores Los registros SP (apuntador de la pila) Y BP (apuntador de base) estaacuten asociados con el registro SS y permiten al sistema accesar datos en el segmento de la pila

Registro SP El apuntador de la pila 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 Los procesadores 80386 y posteriores tienen un apuntador de pila de 32 bits el registro ESP El sistema maneja de forma automaacutetica estos registrosEn el ejemplo siguiente el registro SS contiene la direccioacuten de segmento 27B3[0]H y el SP el desplazamiento 312H Para encontrar la palabra actual que esta siendo procesada en la pila la computadora combina las direcciones en el SS y el SPRegistro BP El BP de 16 bits facilita la referencia de paraacutemetros los cuales son datos y direcciones transmitidos viacutea pila Los procesadores 80386 y posteriores tienen un BP ampliado de 32 bits llamado el registro EBP

Registros Indice Los registros SI y DI estaacuten disponibles para direccionamiento indexado y para sumas y restas

Registro SI El registro iacutendice fuente de 16 bits es requerido por algunas operaciones con cadenas (de caracteres) En este contexto el SI esta asociado con el registro DS Los procesadores 80386 y posteriores permiten el uso de un registro ampliado de 32 bits el ESIRegistro DI El registro iacutendice destino tambieacuten es requerido por algunas operaciones con cadenas de caracteres En este contexto el DI esta asociado con el registro ES Los procesadores 80386 y posteriores permiten el uso de un registro ampliado de 32 bits el EDI

Registro de Banderas De los 16 bits del registro de banderas nueve son comunes a toda la familia de procesadores 8086 y sirven para indicar el estado actual de la maquina y el resultado del procesamiento Muchas instrucciones que piden comparaciones y aritmeacutetica cambian el estado de las banderas algunas cuyas instrucciones pueden realizar pruebas para determinar la accioacuten subsecuente En resumen los bits de las banderas comunes son como sigue

OF (Overflow desbordamiento) Indica desbordamiento de un bitde orden alto (mas a la izquierda) despueacutes de una operacioacuten aritmeacuteticaDF (direccioacuten) Designa la direccioacuten hacia la izquierda o hacia la derecha para mover o comparar cadenas de caracteresIF (interrupcioacuten) Indica que una interrupcioacuten externa como la entrada desde el teclado sea procesada o ignoradaTF (trampa) Permite la operacioacuten del procesador en modo de un paso Los programas depuradores como el DEBUG activan esta bandera de manera que usted pueda avanzar en la ejecucioacuten de una sola instruccioacuten a un tiempo para examinar el efecto de esa instruccioacuten sobre los registros de memoriaSF (signo) Contiene el signo resultante de una operacioacuten aritmeacutetica (0 = positivo y 1 = negativo)ZF (cero) Indica el resultado de una operacioacuten aritmeacutetica o de comparacioacuten (0 = resultado diferente de cero y 1 = resultado igual a cero)AF (acarreo auxiliar) Contiene un acarreo externo del bit 3 en un dato de 8 bits para aritmeacutetica especializadaPF (paridad) Indica paridad par o impar de una operacioacuten en datos de 8 bits de bajo orden (mas a la derecha)CF (acarreo) Contiene el acarreo de orden mas alto (mas a la izquierda) despueacutes de una operacioacuten aritmeacutetica tambieacuten lleva el contenido del ultimo bit en una operacioacuten de corrimiento o de rotacioacuten Las banderas estaacuten en el registro de banderas en las siguientes posiciones

Las banderas mas importantes para la programacioacuten en ensamblador son O S Z y C para operaciones de comparacioacuten y aritmeacuteticas y D para operaciones de cadenas de caracteres Los procesadores 80286 y posteriores tienen algunas banderas usadas para propoacutesitos internos en especial las que afectan al modo protegido Los procesadores 80286 y posteriores tienen un registro extendido de banderas conocido como Eflags

Registros de PILA La pila es un aacuterea de memoria importante y por ello tiene en vez de uno dos registros que se usan como desplazamiento (offset) para apuntar a su contenido Se usan como complemento al registro y son

-SP- Stack Pointer Se traduce como puntero de pila y es el que se reserva el procesador para uso propio en instrucciones de manipulado de pila Por lo general el programador no debe alterar su contenido-BP- Base pointer Se usa como registro auxiliar El programador puede usarlo para su provechoClaro que estos nombres y tipos de registros son estaacutendar ya que cada fabricante puede utilizar otros registro que reemplacen a estos o los auxilien aun asiacute los fabricantes que usan otros registro tienen la misma funcioacuten que los anteriormente mencionados

Ejemplo Registros de uso general del 80868088 Tienen 16 bits cada uno y son ocho

1 AX = Registro acumulador dividido en AH y AL (8 bits cada uno) Usaacutendolo se produce (en general) una instruccioacuten que ocupa un byte menos que si se utilizaran otros registros de uso general Su parte maacutes baja AL tambieacuten tiene esta propiedad El uacuteltimo registro mencionado es el equivalente al acumulador de los procesadores anteriores (8080 y 8085) Ademaacutes hay instrucciones como DAA DAS AAA AAS AAM AAD LAHF SAHF CBW IN y OUT que trabajan con AX o con uno de sus dos bytes (AH o AL) Tambieacuten se utiliza este registro (junto con DX a veces) en multiplicaciones y divisiones

2 BX = Registro base dividido en BH y BL Es el registro base de propoacutesito similar (se usa para direccionamiento indirecto) y es una versioacuten maacutes potente del par de registros HL de los procesadores anteriores

3 CX = Registro contador dividido en CH y CL Se utiliza como contador en bucles (instruccioacuten LOOP) en operaciones con cadenas (usando el prefijo REP) y en desplazamientos y rotaciones (usando el registro CL en los dos uacuteltimos casos)

4 DX = Registro de datos dividido en DH y DL Se utiliza junto con el registro AX en multiplicaciones y divisiones en la instruccioacuten CWD y en IN y OUT para direccionamiento indirecto de puertos (el registro DX indica el nuacutemero de puerto de entradasalida)

5 SP = Puntero de pila (no se puede subdividir) Aunque es un registro de uso general debe utilizarse soacutelo como puntero de pila la cual sirve para almacenar las direcciones de retorno de subrutinas y los datos temporarios (mediante las instrucciones PUSH y POP) Al introducir (push) un valor en la pila a este registro se le resta dos mientras que al extraer (pop) un valor de la pila este a registro se le suma dos

6 BP = Puntero base (no se puede subdividir) Generalmente se utiliza para realizar direccionamiento indirecto dentro de la pila

7 SI = Puntero iacutendice (no se puede subdividir) Sirve como puntero fuente para las operaciones con cadenas Tambieacuten sirve para realizar direccionamiento indirecto

8 DI = Puntero destino (no se puede subdividir) Sirve como puntero destino para las operaciones con cadenas Tambieacuten sirve para realizar direccionamiento indirecto

Cualquiera de estos registros puede utilizarse como fuente o destino en operaciones aritmeacuteticas y loacutegicas

Indicadores (flags) Hay nueve indicadores de un bit en este registro de 16 bits Los cuatro bits maacutes significativos estaacuten indefinidos mientras que hay tres bits con valores determinados los bits 5 y 3 siempre valen cero y el bit 1 siempre vale uno (esto tambieacuten ocurriacutea en los procesadores anteriores)

CF (Carry Flag bit 0) Si vale 1 indica que hubo arrastre (en caso de suma) hacia o preacutestamo (en caso de resta) desde el bit de orden maacutes significativo del resultado Este indicador es usado por instrucciones que suman o restan nuacutemeros que ocupan varios bytes Las instrucciones de rotacioacuten pueden aislar un bit de la memoria o de un registro ponieacutendolo en el CFPF (Parity Flag bit 2) Si vale uno el resultado tiene paridad par es decir un nuacutemero par de bits a 1 Este indicador se puede utilizar para detectar errores en transmisionesAF (Auxiliary carry Flag bit 4) Si vale 1 indica que hubo arrastre o preacutestamo del nibble (cuatro bits) menos significativo al nibble maacutes significativo Este indicador se usa con las instrucciones de ajuste decimalZF (Zero Flag bit 6) Si este indicador vale 1 el resultado de la operacioacuten es cero SF (Sign Flag bit 7) Refleja el bit maacutes significativo del resultado Como los nuacutemeros negativos se representan en la notacioacuten de complemento a dos este bit representa el signo 0 si es positivo 1 si es negativoTF (Trap Flag bit 8) Si vale 1 el procesador estaacute en modo paso a paso En este modo la CPU automaacuteticamente genera una interrupcioacuten interna despueacutes de cada instruccioacuten permitiendo inspeccionar los resultados del programa a medida que se ejecuta instruccioacuten por instruccioacutenIF (Interrupt Flag bit 9) Si vale 1 la CPU reconoce pedidos de interrupcioacuten externas enmascarables (por el pin INTR) Si vale 0 no se reconocen tales interrupciones Las interrupciones no enmascarables y las internas siempre se reconocen independientemente del valor de IF DF (Direction Flag bit 10) Si vale 1 las instrucciones con cadenas sufriraacuten auto-decremento esto es se procesaraacuten las cadenas desde las direcciones maacutes altas de memoria hacia las maacutes bajas Si vale 0 habraacute auto-incremento lo que quiere decir que las cadenas se procesaraacuten de izquierda a derechaOF (Overflow flag bit 11) Si vale 1 hubo un desborde en una operacioacuten aritmeacutetica con signo esto es un diacutegito significativo se perdioacute debido a que tamantildeo del resultado es mayor que el tamantildeo del destino

El procesador Z80 Registros de propoacutesito general El Z80 posee 14 registros de propoacutesito general de 8 bits denominados A B C D H L y A B C D H L Solamente un set de siete registros y el correspondiente registro de Flags F pueden estar activos al mismo tiempo Una instruccioacuten especial selecciona A y F o A y F mientras que otra instruccioacuten selecciona B C D E H L o C D E H LEl programador puede cambiar raacutepidamente de un conjunto de registros de propoacutesito general a otro Esto proporciona una mayor capacidad de almacenamiento en registros El acceso a datos presentes en registros de la CPU es mucho maacutes raacutepido que el acceso a datos en memoriaLos registros pueden agruparse de a pares formando registros de 16 bits Estos son los pares BC DE y HL (sus equivalentes primas tambieacuten pueden agruparse)

Flags

Aunque los Flags existen fiacutesicamente dentro de la CPU estaacuten agrupados loacutegicamente formando un registro Los Flags del Z80 son los siguientes

Flag de Cero(Z) Toma el valor 1 si el resultado de una operacioacuten es cero Es el bit seis Flag de signo(S) Toma el valor 1 si el resultado de una operacioacuten es negativo Es el bit siete Flag de Carry(C) Este flag es afectado por las instrucciones de desplazamiento y es puesto en 1 oacute 0 seguacuten el valor del bit desplazado Tambieacuten es afectado por las operaciones aritmeacuteticas Este flag es el bit ceroFlag de Paridad y overflow(PV) En el caso de paridad se pone en 1 si el resultado de una operacioacuten posee un nuacutemero par de unos Cuando el flag PV se usa para representar overflow el flag se pone en 1 si ocurre un overflow despueacutes de una operacioacuten aritmeacutetica Este flag es el bit 2Flag H y N Son dos Flip Flop que no pueden ser examinados por las instrucciones de salto condicional El Z80 los usa para las operaciones BCD H representa el rebalse que genera considerando los cuatro bits menos significativos del resultado y N es el flag de resta el cual se activa para indicar si la uacuteltima instruccioacuten ejecutada fue suma o resta En el caso general una instruccioacuten de resta coloca en 1 el flag N y una instruccioacuten de suma lo coloca en 0 Los Flags H y N son los bits 4 y 1 respectivamente

Registros de propoacutesito especial Program Counter Es un registro de 16 bits que indica la direccioacuten de la proacutexima instruccioacuten ejecutar Las instrucciones del Z80 pueden contar de uno dos tres o cuatro bytes

Stack-Pointer Es un registro de 16 bits que indica la direccioacuten de una memoria RAM externa denominada Stack El objetivo de esta aacuterea de memoria es proporcionar un medio de almacenamiento temporal de los registros del usuario registro de Flags y del program Counter La provisioacuten de Stack es fundamental para operaciones tales como los llamados a sub-rutinas e interrupcionesRegistros iacutendices IX e IY Estos registros son de 16 bits disentildeados para permitir un direccionamiento indexado en los programas del Z80 Cuando se ejecuta una instruccioacuten en un modo de direccionamiento indexado se usa uno de los dos registros iacutendices para calcular la direccioacuten del operandoRegistro de interrupciones I Es un registro de 8 bits que puede ser cargado para especificar el byte maacutes significativo de una direccioacuten de memoria El byte menos significativo es proporcionado por el dispositivo que solicita la interrupcioacutenRegistro de refresh de memoria R Es un registro especial disentildeado para proporcionar un refresh automaacutetico de las memorias RAM dinaacutemicas Registro de instrucciones El registro de instrucciones tiene por misioacuten almacenar el coacutedigo de operacioacuten de la instruccioacuten leiacuteda desde memoria Este coacutedigo es descodificado y con esta informacioacuten se dirigen todos los micro-pasos httpwwwoocitiesorgmxantrahxgdocumentosorg_compregistrohtml

Registros del procesadorDentro del procesador hay un conjunto de registros que ofrecen un nivel de memoria que es maacutes raacutepido y pequentildeo que la memoria principal Los registros del procesador sirven para dos funciones Registros visibles de usuario Un programador de lenguaje de maacutequina o ensamblador puede minimizar las referencias a memoria principal mediante un uso oacuteptimo de estos registros Con lenguajes de alto nivel un compilador que optimice coacutedigo intentaraacute hacer una seleccioacuten inteligente de queacute variables asignar a registros y cuaacuteles a ubicaciones de la memoria principal Algunos lenguajes de alto nivel como C permiten que el programador indique al compilador queacute variables se deben almacenar en registros Registros de control y de estado Son utilizados por el procesador para el control de las operaciones o por rutinas privilegiadas del sistema operativo para controlar la ejecucioacuten de los programas No hay una separacioacuten clara de los registros en estas dos categoriacuteas Por ejemplo en algunas maacutequinas el contador de programa es visible para los usuarios pero en otras muchas no lo es Sin embargo para el propoacutesito de la discusioacuten que viene a continuacioacuten es conveniente emplear estas categoriacuteas Registros visibles de usuario Un registro visible de usuario es aqueacutel que puede ser referenciado por medio del lenguaje de maacutequina que ejecuta el procesador y es por lo general accesible para todos los programas incluyendo tanto los programas de aplicacioacuten como los del

sistema Las clases de registro que normalmente estaacuten disponibles son los registros de datos los registros de direccioacuten y los registros de coacutedigos de condicioacuten

Los registros de datosPueden ser asignados por el programador a diversas funciones En algunos casos son de propoacutesito general y pueden ser empleados por cualquier instruccioacuten de maacutequina que lleve a cabo operaciones sobre los datos Sin embargo suelen ponerse ciertas restricciones a menudo Por ejemplo puede haber registros dedicados a operaciones en coma flotante

Los registros de direccioacutenContienen direcciones en la memoria principal de datos e instrucciones o una parte de la direccioacuten que se utiliza en el caacutelculo de la direccioacuten completa Estos registros pueden ser de propoacutesito general o pueden estar dedicados a un modo especiacutefico de direccionamiento Entre los ejemplos se incluyen

Registro iacutendice El direccionamiento indexado es un modo comuacuten de direccionamiento que implica sumar un iacutendice a un valor base para obtener la direccioacuten efectiva

Puntero de segmento Con direccionamiento segmentado la memoria se divide en segmentos que son bloques de palabras de tamantildeo variable Una referencia a memoria consta de una referencia a un segmento particular y un desplazamiento dentro del segmento En este modo se utiliza un registro que alberga una direccioacuten base (ubicacioacuten inicial) de un segmento Puede haber varios registros de este tipo por ejemplo uno para el sistema operativo (es decir cuando se ejecuta coacutedigo del sistema operativo en el procesador) y otro para la aplicacioacuten que estaacute en ejecucioacuten

Puntero de pila Si hay un direccionamiento de pila visible para los usuarios la pila estaraacute por lo general en la memoria principal existiendo un registro dedicado a sentildealar la cima de la pila

Esto permite el uso de instrucciones que no contienen ninguacuten campo de direccioacuten tales como push (poner) y pop (sacar) Una uacuteltima categoriacutea de registros que son al menos parcialmente visibles para los usuarios son aquellos que contienen coacutedigos de condicioacuten (tambieacuten denominados indicadores o flags) Los coacutedigos de condicioacuten son bits activados por el hardware del procesador como resultado de determinadas operaciones

Por ejemplo una operacioacuten aritmeacutetica puede producir un resultado positivo negativo cero o desbordamiento Ademaacutes de almacenar el resultado de esta operacioacuten en un registro o en memoria tambieacuten se activaraacute un coacutedigo de condicioacuten Este coacutedigo puede consultarse posteriormente como parte de una operacioacuten de salto condicional

Los bits de coacutedigo de condicioacuten se agrupan en uno o maacutes registros Estos forman generalmente parte de un registro de control En general las instrucciones de maacutequina permiten leer estos bits mediante referencias impliacutecitas pero no pueden ser alterados por el programador

En algunas maacutequinas una llamada a un procedimiento o subrutina provocaraacute que los registros visibles de usuario se salven automaacuteticamente para luego restaurarlos al retomar Este proceso de salvar y restaurar lo lleva a cabo el procesador como parte de la ejecucioacuten de las instrucciones de llamada y retomo Esto permite que cada procedimiento pueda usar los registros de forma independiente En otras maacutequinas es responsabilidad del programador salvar los contenidos de los registros de usuario visibles que sean relevantes antes de hacer la llamada a un procedimiento incluyendo instrucciones en el programa con tal propoacutesito Asiacute pues las instrucciones de salvar y restaurar pueden ser llevadas a cabo por el hardware o por el software dependiendo de la maacutequina

Registros de control y de estado Varios registros se emplean para controlar las operaciones del procesador En la mayoriacutea de las maacutequinas la mayor parte de estos registros no son visibles para los usuarios Algunos de ellos pueden estar accesibles a las instrucciones de maacutequina ejecutadas en un modo de control o modo del sistemaPor supuesto maacutequinas diferentes tendraacuten organizaciones diferentes de registros y podraacuten usar terminologiacuteas distintas

Ademaacutes de los registros MAR MBR IOAR y IOBR mencionados anteriormente los siguientes registros son esenciales en la ejecucioacuten de instrucciones Contador de programa (PC Program Counter) Contiene la direccioacuten de la instruccioacuten a ser leiacuteda Registro de instruccioacuten (IR Instruction Regiacutester) Contiene la uacuteltima instruccioacuten leiacuteda Todos los disentildeos de procesadores

incluyen ademaacutes un registro o conjunto de registros conocidos a menudo como palabra de estado del programa (PSW Program Status Word) que contiene informacioacuten de estado Normalmente la PSW contiene coacutedigos de condicioacuten junto a otra informacioacuten de estado Entre los campos e indicadores maacutes comunes se incluyen los siguientes

Signo Contiene el bit del signo de la uacuteltima operacioacuten aritmeacutetica efectuada Cero Se activa cuando el resultado de una operacioacuten aritmeacutetica es cero

Acarreo Se activa cuando como resultado de una suma o una resta se produce un acarreo maacutes allaacute del bit maacutes significativo Se utiliza en operaciones aritmeacuteticas de maacutes de una palabra

Igualdad Se activa si una comparacioacuten loacutegica da como resultado la igualdad Desbordamiento Empleado para sentildealar un desbordamiento aritmeacutetico Habilitarinhahilitar interrupcioacutenes Empleado para habilitar o inhabilitar interrupciones Cuando Las interrupciones estaacuten

inhabilitadas el procesador las ignora Esto es muy deseable cuando el sistema operativo estaacute ocupado en el tratamiento de otra interrupcioacuten

Supervisor Indica si el procesador estaacute ejecutando en modo supervisor o en modo usuario Ciertas instrucciones privilegiadas soacutelo se pueden ejecutar en modo supervisor y soacutelo se puede tener acceso a ciertas aacutereas de memoria en modo supervisor

En el disentildeo de un procesador especiacutefico se pueden encontrar una serie de registros relacionados con el estado y el control Ademaacutes de la PSW puede haber un puntero a un bloque de memoria que contenga informacioacuten de estado adicional En maacutequinas que utilizan varios tipos de interrupcioacuten se puede ofrecer una serie de registros con punteros a cada rutina de tratamiento de interrupcioacuten Si se utiliza una pila para implementar ciertas funciones (por ejemplo las llamadas a procedimientos) entonces se necesita un puntero a la pila Por uacuteltimo los registros tambieacuten pueden utilizarse para el control de las operaciones de ES Una serie de factores inciden en el disentildeo de la organizacioacuten de los registros de control y estado Un punto clave es el soporte del sistema operativo Cierto tipo de informacioacuten de control es de utilidad especiacutefica para el sistema operativo Si el disentildeador del procesador dispone de una visioacuten funcional del sistema operativo la organizacioacuten de los registros puede adaptarse convenientementeOtra decisioacuten clave del disentildeo es la asignacioacuten de informacioacuten de control a los registros y la memoria Es habitual dedicar los primeros centenares o miles de palabras (las maacutes bajas) de memoria para el control El disentildeador debe decidir la cantidad de informacioacuten de control que debe residir en los raacutepidos y costosos registros junto a la cantidad que debe permanecer en memoria principal que es maacutes lenta y barata

httpslamiradelsniperwordpresscom20120820registros-del-procesador

1 Los registros

El procesador necesita para su funcionamiento de ciertas aacutereas de almacenamiento que aquiacute se llaman registros y que son de dimensiones miacutenimas [3] sin embargo tienen la ventaja de su rapidez Comparados con los accesos a RAM los de registro son como miacutenimo 10 veces maacutes veloces

El 8088 dispone de catorce registros de 16 bits que se agrupan en cuatro grupos y que reciben nombres especiales (precisamente los que se utilizan para designarlos en lenguaje ensamblador)

sect311 Registros de uso general

Existen 4 registros denominados AX BX CX y DX que en realidad tienen asignados usos caracteriacutesticos aunque pueden ser utilizados a discrecioacuten para cualquier cosa que necesitemos

AX es denominado acumulador suele contener uno de los operandos que intervienen en las operaciones aritmeacuteticas y loacutegicas y despueacutes de esta el resultado de la operacioacuten En general

las instrucciones que trabajan con este registro (o su mitad inferior) tienen un microcoacutedigo maacutes simple que la misma instruccioacuten ejecutada con otro registro

BX es el registro base suele contener la direccioacuten de inicio de una tabla de valores

CX es denominado contador Las instrucciones de bucle (LOOP) utilizan este registro como contador

DX es un registro de datos multiuso Se utiliza en operaciones de multiplicacioacuten y divisioacuten junto con AX En operaciones de entradasalida de puertos INOUT su mitad inferior DL contiene el

nuacutemero de puerto ( 25)

Aunque estos cuatro registros son de 16 bits (como los 10 restantes) [6] en caso necesario pueden ser utilizados en dos mitades (nibbles) High y Low de 8 bits con lo que puede considerarse que existen 12 registros de uso general (no simultaacuteneos) los anteriores y sus mitades AH AL BH BL CH CL DH y DL

sect312 Registros de segmento

Se dispone de cuatro registros que sirven para contener las direcciones de otros tantos segmentos (zonas de 64 KB de memoria) Utilizaacutendolos en conjuncioacuten con otros registros que sentildealan las

direcciones concretas dentro de estos segmentos (los desplazamientos ) permiten manejar la totalidad de la memoria direccionable (el bus de direcciones es de 20 bits) Ver al respecto el epiacutegrafe

Direccionamiento segmentado ( 51)

Segmento de coacutedigo CS (Code segment) Sentildeala la direccioacuten del segmento de coacutedigo del

programa que se estaacute ejecutando ( E132) Segmento de datos DS (Data segment) Sentildeala la direccioacuten del segmento de datos del

programa en ejecucioacuten ( E132) Segmento de pila SS (Stack segment) Sentildeala la direccioacuten del segmento donde estaacute la pila

del programa ( E132) Segmento extra ES (Extra segment) Es un segmento auxiliar a los anteriores se utiliza para

sentildealar espacio extra en alguno de los segmentos o para almacenar momentaacuteneamente direcciones intermedias

Nota Puede ocurrir que programas pequentildeos utilicen el mismo segmento para el coacutedigo los datos y la pila

sect313 Registros de puntero

Son 5 registros destinados a contener direcciones estas direcciones son desplazamientos dentro de los

segmentos indicados por los registros de segmento (ver figura 51 Fig2)

El primero denominado indistintamente puntero de instruccioacuten IP (Instruccioacuten pointer) y contador de programa PC(Program counter) indica el desplazamiento (dentro del segmento de coacutedigo CS) de la proacutexima instruccioacuten a ejecutar

El puntero de pila SP (Stack Pointer) sentildeala el desplazamiento del final de la pila dentro del segmento de pila SS En caso necesario la pila puede crecer a partir de este punto de forma que por ejemplo una nueva invocacioacuten de funcioacuten crearaacute un nuevo registro de activacioacuten que comenzaraacute en este punto

El puntero base BP (Base pointer) sentildeala el desplazamiento (dentro del segmento de pila SS) donde se encuentra el origen de la zona ocupada por las variables dinaacutemicas

Existen dos registros denominados de iacutendice en razoacuten de su utilizacioacuten muy particular el iacutendice fuente SI (Source index) y el iacutendice destino DI (Destination index) Generalmente estos dos registros se utilizan con alguno de los registros de uso general y con ciertas

instrucciones especiacuteficamente pensadas para transferir datos (dentro de un rango de posiciones de memoria) desde un punto inicial de un segmento de datos a otro

Ver en la paacutegina adjunta un ejemplo relativo al uso de punteros ( 32 Ejemplo-2)

sect314 Registro de estado

Existe un registro especial el registro de estado (FLAGS) en el que 9 de los 18 bits actuacutean como semaacuteforos (indicadores del estado del procesador y del resultado de determinadas operaciones) Por ejemplo si despueacutes de una suma aritmeacutetica hay o no desbordamiento del bit maacutes significativo

Los nombres y situacioacuten de cada uno dentro de la palabra de 16 bits se muestran en la figura 2

Cada bits individual puede estar activo (1) o inactivo (0) y tiene un identificador que termina en F(Flag) Son los siguientes

Bit Indicador de Uso

CF Acarreo (Carry Flag)

Indicador de arrastre del bit de mayor orden que puede ocurrir en las operaciones aritmeacuteticas suma y resta

PF Paridad (Parity Flag)

Si estaacute activo Indica un nuacutemero par de bits activos (bits cuyo contenido es 1) Esta informacioacuten es uacutetil cuando el procesador controla transmisiones de datos

AF Acarreo auxiliar Indicador de ajuste en operaciones aritmeacuteticas con cantidades

BCD ( E01w1)

ZF Cero (Zero Flag) Estaacute activo si el resultado de operacioacuten es cero o resultado de comparacioacuten igual

SF Signo (Sign Flag) Si estaacute activo indica que el resultado de operacioacuten o de comparacioacuten son negativos [5]

TF Detencioacuten (Trap Flag)

Si estaacute activo el procesador genera automaacuteticamente una interrupcioacuten despueacutes de la ejecucioacuten de cada instruccioacuten lo que permite controlar paso a paso la ejecucioacuten del programa Este bit debe estar normalmente inactivo (a 0)

IF Interrupcioacuten (Interrupt Flag)

Este bit controla el estado del sistema de interrupciones

enmascarables ( 24) Cuando estaacute activo (1) permite las

interrupciones el estado inactivo (0) las deshabilita

DF Direccioacuten (Direction Flag)

Indica la direccioacuten de las operaciones

OF Desbordamiento (Overflow Flag)

Sentildeala desbordamiento aritmeacutetico

Nota Los usuarios de MS-DOS o Windows puede usar el programa DEBUG ( 171) para inspeccionar y modificar el contenido de los registros de la siguiente forma

Invocar DEBUG desde una ventana DOS (suponemos que estamos en Windows el prompt es un guioacuten -)

introducir el comando R (pedimos que nos muestre el contenido de los registros)

Salir de Debug con Q

En mi PC la respuesta al comando tiene el siguiente aspecto

AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=1779 ES=1779 SS=1779 CS=1779 IP=0100 NV UP EI PL NZ NA PO NC

Los valores estaacuten expresados en hexadecimal La uacuteltima secuencia de caracteres (NV UP EI PL NZ NA PO NC) muestra el contenido del registro de estado (el bit TF de detencioacuten no se muestra) el significado de la notacioacuten utilizada es el siguiente

Bit Indicador de Indicativo si bit 1 Indicativo si bit 0

CF Acarreo CY (Carry yes) NC (No Carry)

PF Paridad PE (Parity Even) paridad par PO (Parity Odd) paridad impar

AF Acarreo auxiliar AC (Auxiliar Carry) NA (No Auxiliar)

ZF Cero ZR (Zero) NZ (No Zero)

SF Signo NG (Negative) negativo PL (Plus) positivo

IF Interrupcioacuten EI (Enabled Interrupt) activa DI (Disabled Interrupt) desactivada

DF Direccioacuten DN (Down) decremento UP incremento

OF Desbordamiento OV (Overflow) NV (No overflow)

Tambieacuten es posible inspeccionar el contenido de un solo registro antildeadiendo al comando R el nombre del registro Por ejemplo el comando R IP muestra el contenido del contador de programa Los nombres que pueden utilizarse para los registros son los siguientes AX BX CX DX SP BP SI DI DS ES SS CS IP y F (este uacuteltimo para el registro de estado)

Despueacutes de un comando de este tipo DEBUG responde con un prompt distinto del habitual para indicar que debe introducir el nuevo valor que desea para el registro Pulsando INTRO se vuelve al modo normal

sect315 Comentario

Observe que tanto el registro contador de programa IP como el de base BP siempre contienen direcciones de memoria (los otros pueden contener direcciones o datos) Ni los registros de segmento ni los de puntero se pueden dividir en mitades (como los de uso general)

httpwwwzatorcomHardwareH3_2htm

Definiciones de registros Definicioacuten 1 un registro es una memoria de alta velocidad y poca capacidad integrada en el microprocesador que permite guardar transitoriamente y acceder a valores muy usados generalmente en operaciones matemaacuteticas Definicioacuten 2 un registro es una porcioacuten de memoria ultrarraacutepida de poca capacidad e integrado al microprocesador que permite almacenar y acceder datos usados frecuentemente Se emplean para aumentar la velocidad de ejecucioacuten de los programas

3 Funcioacuten de los registros Los registros estaacuten en la cumbre de la jerarquiacutea de memoria y son la manera maacutes raacutepida que tiene el sistema de almacenar datos Los registros se miden generalmente por el nuacutemero de bits que almacenan por ejemplo un registro de 8 bits o un registro de 32 bitsldquo La CPU contiene un conjunto de localidades de almacenamiento temporal de datos de alta velocidad llamada registro Algunos de los registros estaacuten dedicados al control y solo la unidad de control tiene acceso a ellos Los registros restantes son los registros de uso general y el programador es el usuario que tiene acceso a ellos

4 Los nombres de los registros describen la forma como algunas instrucciones enensamblador las emplean

5 Algunos registros basicos Dentro del conjunto baacutesico de registros de control se deben incluir a los siguientesa middot Contador de programa (PC)b middot Registro de direcciones de la memoria (MAR)c middot Registro de datos (RD)d middot Registro de instrucciones (IR)e middot Palabra de estado de programa (PSW)

6 Funcioacuten del PC La funcioacuten del PC consiste en seguir la pista de la instruccioacuten por buscar (capturar) en el siguiente ciclo de maquina por lo tanto contiene la direccioacuten de la siguiente instruccioacuten por ejecutar El PC es modificado dentro del ciclo de buacutesqueda de la instruccioacuten actual mediante la suma de una constante El numero que se agrega al PC es la longitud de una instruccioacuten en palabras Por lo tanto si una instruccioacuten tiene una palabra de longitud se agrega 1 al PC si una instruccioacuten tiene dos palabras de largo se agrega 2 y asiacute sucesivamente

7 Funcioacuten de MAR Registro de direcciones de la memoria (MAR) funciona como registro de enlace entre la CPU y el canal de direcciones Cuando se logra el acceso a la memoria la direccioacuten es colocada en el MAR por la unidad de control y ahiacute permanece hasta que se completa la transaccioacuten El numero de bit que hay en el MAR es igual al del canal de direcciones La diferencia que existe entre el PC y el MAR es que durante el ciclo de ejecucioacuten de una instruccioacuten el PC y el MAR sirven al mismo fin Sin embargo muchas de las instrucciones de la maquina hacen referencia a la memoria y operan con los datos que

estaacuten en ella Como la direccioacuten de los datos suele ser diferente de la instruccioacuten siguiente se necesita el MAR

8 Funcioacuten de RD Registro de datos la funcioacuten del RD consiste en proporcionar un aacuterea de almacenamiento temporal (memoria intermedia acumulada o buffer) de datos que se intercambian entre la PCU y la memoria Los datos pueden ser instrucciones (obtenidos en el ciclo de ejecucioacuten) o datos del operando (obtenidos en el ciclo de ejecucioacuten) Debido a su conexioacuten directa con el canal de datos el RD contiene el mismo numero de bit que dicho canal

9 Funcioacuten de IR Registro de instrucciones (IR) es un registro que conserva el coacutedigo de operacioacuten de la instruccioacuten en todo el ciclo de la maquina El coacutedigo es empleado por la unidad de control de la CPU para generar las sentildeales apropiadas que controla le ejecucioacuten de la instruccioacuten La longitud del ER es la longitud en bit del coacutedigo de operacioacuten

10 Funcioacuten de PSW Palabra de estado de programa (PSW) la palabra de estado o condicioacuten de programa almacena informacioacuten pertinente sobre el programa que este ejecutaacutendose Por ejemplo al completarse una funcioacuten de la unidad aritmeacutetica loacutegica se modifica un conjunto de bit llamados coacutedigos (o sentildeales de condicioacuten) Estos bit especifican si el resultado de una operacioacuten aritmeacutetica fue 0 o negativo o si el resultado se desbordoacute Ademaacutes el PSW contiene bit que hacen posible que la computadora responda a solicitudes de servicio asincroacutenicas generadas por dispositivos de Entrada-Salida o condiciones de error interno Estas sentildeales se denominan interrupciones

  • 1 Los registros
  • sect311 Registros de uso general
  • sect312 Registros de segmento
  • sect313 Registros de puntero
  • sect314 Registro de estado
  • sect315 Comentario
Page 2: Registros de procesador.docx

El apuntador de pila IP de 16 bits estaacute asociado con el registro SS y proporciona un valor de desplazamiento que se refiere a la palabra actual que estaacute siendo procesada en la pilaEl ejemplo siguiente el registro SS contiene la direccioacuten de segmento 27B3[0]H y el SP el desplazamiento 312H Para encontrar la palabra actual que estaacute siendo procesada en la pila el microprocesador combina las direcciones en el SS y el PPDireccioacuten de segmento en el registro SS 27B30HDesplazamiento en el registro SP + 312HDireccioacuten en la Pila 27E42H

helliphellip27B3[0]H 312H

Direccioacuten del segmento SS Desplazamiento del SP

Registro BPEl registro BP de 16 bits facilita la referencia de paraacutemetros los cuales son datos y direcciones transmitidos viacutea lapida

4 Registros de propoacutesitos generalesLos registros de propoacutesitos generales AX BX CX y DX son los caballos de batalla o las herramientas del sistema Son los uacutenicos en el sentido de que se puede direccionarlos como una palabra o como una parte de un byte El uacuteltimo byte de la izquierda es la parte alta y el uacuteltimo 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 Las instrucciones siguientes mueven ceros a los registros CX CH y CL respectivamenteMov CX 00Mov CH 00ov CL 00Los procesadores 80386 y posteriores permiten el uso de todos registros de propoacutesito general mas versiones de 32 bits EAX EBX y EDCX

Registros AXEl registro AX el acumulador principal es utilizado para operaciones que implican entradasalida y la mayor parte de la aritmeacutetica Por ejemplo las instrucciones para multiplicar dividir y traducir suponen el uso del AX Tambieacuten algunas operaciones generan coacutedigo maacutes eficientes si se refiere al AX en lugar de los otros registrosRegistro BXEl BX es conocido como el registro base ya que es el uacutenico registro de propoacutesitos generales que pueden ser unos iacutendices para direccionamiento indexado Tambieacuten es comuacuten emplear al BX para caacutelculosRegistro CXEl CX es conocido como el registro contador Puede contener un valor para controlar el nuacutemero de veces que un ciclo se repite o un valor para corrimiento de bits hacia la derecha o hacia la izquierda El CX tambieacuten es usado para muchos caacutelculosRegistro DXEl DX es conocido como el registro de datos Algunas operaciones de entradasalida requieren su uso y las operaciones de multiplicacioacuten y divisioacuten con cifras grandes suponen al DX y al AX trabajando juntos Puede usar los registros de propoacutesitos para suma y resta de cifras de 8 16 32 bits

5 Registro iacutendiceLos registros SI y DI estaacuten disponibles para direccionamientos indexados y para sumas y restas Que son las operaciones de punta

Registro SIEl registro iacutendice de 16 bits es requerido por algunas operaciones con cadenas (de caracteres) En este contexto el SI estaacute asociado con el registro DS Los procesadores 80386 y posteriores permiten el uso de un registro ampliado a 32 bits el ESIRegistro DIEl registro iacutendice destino tambieacuten es requerido por algunas operaciones con cadenas de caracteres En este contexto el Di estaacute asociado con el registro ES Los procesadores 80386 y posteriores permiten el uso de un registro ampliado a 32 bits el EDI

Registro de banderaLos registros de banderas sirven parar indicar el estado actual de la maacutequina y el resultado del procesamiento Cuando algunas instrucciones piden comparaciones o caacutelculos aritmeacuteticos cambian el estado de las banderasLas banderas estaacuten en el registro de banderas en las siguientes posicionesbits 15 14 13 12 11 10 9 8 7 6 54 3 2 1

O D I T S Z A P C

BanderaLas banderas maacutes comunes son las siguientesOF (Over flow flag desbordamiento)Indica el desbordamiento de un bit de orden alto (mas a la izquierda) despueacutes de una operacioacuten aritmeacuteticaDF (Direction flag Direccion)Designa la direccioacuten hacia la izquierda o hacia la derecha para mover o comparar cadenas de caracteresIF (Interruption flag Interrupcion)Indica que una interrupcioacuten externa como la entrada desde el teclado sea procesada o ignoradaTF (Trap flag Trampa)Examina el efecto de una instruccioacuten sobre los registros y la memoria Los programas depuradores como DEBUG activan esta bandera de manera que pueda avanzar en la ejecucioacuten de una sola interrupcioacuten a un tiempoSF (Sign flag Signo)Contiene el signo resultante de una operacioacuten aritmeacutetica (0=positivo y 1= negativo)ZF (Zero flag Zero)Indica el resultado de una operacioacuten aritmeacutetica o de comparacioacuten (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 aritmeacutetica especializadaPF (Parity flag Paridad)Indica paridad par o impar de una operacioacuten 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) despueacutes de una operacioacuten aritmeacutetica tambieacuten lleva el contenido del ultimo bit en una operacioacuten de corrimiento o rotacioacutenCuadro ComparativoTIPOS DE REGISTROS FUNCION

Registros de Segmento Un registro de segmento tiene 16 bits de longitud y facilita un aacuterea de memoria para el direccionamiento conocida como el segmento actual

Registros de Apuntador de Instrucciones Este registro esta compuesto por 16 bits y contiene el desplazamiento de la siguiente instruccioacuten que se va a ejecutar Los procesadores 80386 y posteriores tiene un IP ampliado de 32 bits llamado EIP

Registros Apuntadores Permiten al sistema accesar datos al segmento de la pila Los procesadores 80386 tiene un apuntador de pila de 32 bits llamado ESP El sistema maneja de manera automaacutetica estos registros

Registros de Propoacutesito General Son los caballos de batalla del sistema y pueden ser direccionados como una palabra o como una parte de un bytes Los procesadores 80386 y posteriores permiten el uso de todos los registros de propoacutesitos general mas sus versiones ampliadas de 32 bits llamados EAX EBXECX y EDX

Registros Indices Sirven para el direccionamiento de indexado y para las operaciones de sumas y restas

Registros de Banderas Sirven para indicar el estado actual de la maquina y el resultado del procesamiento De los 16 bits de registro de bandera 9 son comunes a toda la familia de los procesadores 8086

Ejemplo De Representacioacuten De Los RegistrosDespueacutes de haber conceptualizado e interpretado los diferente tipos de registro nos vemos en la necesidad de dar un ejemplo no muy praacutectico 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 pequentildea porcioacuten de eacutel se muestran como se colocan dentro los diferentes tipos registros TITLE P17HANRD(EXE) Lectura secuencial de registrosMODEL SMALLSTACK 64------------------------------------------------------------------------------------------DATAENDCDE DB 00 FIN DEL INDICARDOR DE PROCESOHANDLE DW IOAREA DB 32 DUP(acute acute)

OPENMSG DB acute Open error acute 0DH 0AHPATHNAM DB acuteDNAMEFILESRTacute 0READMSD DB acute Read error acute 0DH 0AHROW DB 00---------------------------------------------------------------------------------------------CODEBEGIN PROC FARMOV AXdata inicializaMOV DSAX registro deMOV ESAX segmentoMOV AX0600H Autor

Oscar borja

Leer maacutes httpwwwmonografiascomtrabajos7regiregishtmlixzz3YhKCX7bC

Registros de un microprocesadorEn arquitectura de ordenadores un registro es una memoria de alta velocidad y poca capacidad integrada en el microprocesador que permite guardar transitoriamente y acceder a valores muy usados generalmente en operaciones matemaacuteticasLos registros estaacuten en la cumbre de la jerarquiacutea de memoria y son la manera maacutes raacutepida que tiene el sistema de almacenar datos Los registros se miden generalmente por el nuacutemero de bits que almacenan por ejemplo un registro de 8 bits o un registro de 32 bits Los registros generalmente se implementan en un banco de registros pero antiguamente se usaban biestables individuales memoria SRAMo formas aun maacutes primitivasEl teacutermino es usado generalmente para referirse al grupo de registros que pueden ser directamente indexados como operandos de una instruccioacuten como estaacute definido en el conjunto de instrucciones Sin embargo los microprocesadores tienen ademaacutes muchos otros registros que son usados con un propoacutesito especiacutefico como el contador de programa Por ejemplo en la arquitectura IA32 el conjunto de instrucciones define 8 registros de 32 bits

Tipos de registro

Los registros de datos son usados para guardar nuacutemeros enteros En algunas computadoras antiguas existiacutea un uacutenico registro donde se guardaba toda la informacioacuten llamado acumulador

Los registros de memoria son usados para guardar exclusivamente direcciones de memoria Eran muy usados en la arquitectura Harvard ya que muchas veces las direcciones teniacutean un tamantildeo de palabra distinto que los datos

Los registros de propoacutesito general (en ingleacutes GPRs o General Purpose Registers) pueden guardar tanto datos como direcciones Son fundamentales en la arquitectura de von Neumann La mayor parte de las computadoras modernas usa GPR

Los registros de coma flotante son usados para guardar datos en formato de coma flotante Los registros constantes tienen valores creados por hardware de soacutelo lectura Por ejemplo en MIPS el registro cero

siempre vale 0 Los registros de propoacutesito especiacutefico guardan informacioacuten especiacutefica del estado del sistema como el puntero de pila o

el registro de estado

REGISTROS DEL PROCESADORLos registros del procesador se emplean para controlar instrucciones en ejecucioacuten manejar direccionamiento de memoria y proporcionar capacidad aritmeacutetica Los registros son direccionables por medio de un nombre Los bits por convencioacuten se numeran de derecha a izquierda como en 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0Los registros internos del procesador se puede clasificar en 6 tipos diferentes Registros de segmento

1 Registros de propoacutesito general2 Registros de apuntadores

3 Registros de banderas4 Registros de Puntero de instruccioacuten5 Registros de Pila

Registros de segmento Un registro de segmento tiene 16 bits de longitud y facilita un aacuterea de memoria para direccionamiento conocida como el segmento actualRegistro CS El DOS almacena la direccioacuten inicial del segmento de coacutedigo de un programa en el registro CS Esta direccioacuten de segmento mas un valor de desplazamiento en el registro apuntador de instruccioacuten (IP) indica la direccioacuten de una instruccioacuten que es buscada para su ejecucioacutenRegistro DS La direccioacuten inicial de un segmento de datos de programa es almacenada en el registro DS En teacuterminos sencillos esta direccioacuten mas un valor de desplazamiento en una instruccioacuten genera una referencia a la localidad de un byte especifico en el segmento de datosRegistro SS El registro SS permite la colocacioacuten en memoria de una pila para almacenamiento temporal de direcciones y datos El DOS almacena la direccioacuten de inicio del segmento de pila de un programa en le registro SS Esta direccioacuten de segmento mas un valor de desplazamiento en el registro del apuntador de pila (SP) indica la palabra actual en la pila que esta siendo direccionadaRegistros ES Alguna operaciones con cadenas de caracteres (datos de caracteres) utilizan el registro extra de segmento para manejar el direccionamiento de memoria En este contexto el registro ES esta asociado con el registro DI (iacutendice) Un programa que requiere el uso del registro ES puede inicializarlo con una direccioacuten de segmento apropiadaRegistros FS y GS Son registros extra de segmento en los procesadores 80386 y posteriores

Registros de propoacutesito general Los registros de propoacutesito general AX BX CX y DX son los caballos de batalla del sistema Son uacutenicos 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 su nombreRegistro AX El registro AX el acumulador principal es utilizado para operaciones que implican entradasalida y la mayor parte de la aritmeacutetica Por ejemplo las instrucciones para multiplicar dividir y traducir suponen el uso del AX Tambieacuten algunas operaciones generan coacutedigo mas eficiente si se refieren al AX en lugar de a los otros registrosRegistro BX El BX es conocido como el registro base ya que es el uacutenico registro de propoacutesito general que puede ser iacutendice para direccionamiento indexado Tambieacuten es comuacuten emplear el BX para caacutelculosRegistro DX El DX es conocido como l registro de datos Alguna operaciones de entradasalida requieren uso y las operaciones de multiplicacioacuten y divisioacuten con cifras grandes suponen al DX y al AX trabajando juntos

Registro de Apuntador de Instrucciones El registro apuntador de instrucciones (IP) de 16 bits contiene el desplazamiento de direccioacuten de la siguiente instruccioacuten que se ejecuta El IP esta asociado con el registro CS en el sentido de que el IP indica la instruccioacuten actual dentro del segmento de coacutedigo que se esta ejecutando actualmente Los procesadores 80386 y posteriores tienen un IP ampliado de 32 bits llamado EIPEn el ejemplo siguiente el registro CS contiene 25A4[0]H y el IP contiene 412H Para encontrar la siguiente instruccioacuten que seraacute ejecutada el procesador combina las direcciones en el CS y el IPSegmento de direccioacuten en el registro CS 25A40H Desplazamiento de direccioacuten en el registro IP + 412H Direccioacuten de la siguiente instruccioacuten 25E52H

Registros Apuntadores Los registros SP (apuntador de la pila) Y BP (apuntador de base) estaacuten asociados con el registro SS y permiten al sistema accesar datos en el segmento de la pila

Registro SP El apuntador de la pila 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 Los procesadores 80386 y posteriores tienen un apuntador de pila de 32 bits el registro ESP El sistema maneja de forma automaacutetica estos registrosEn el ejemplo siguiente el registro SS contiene la direccioacuten de segmento 27B3[0]H y el SP el desplazamiento 312H Para encontrar la palabra actual que esta siendo procesada en la pila la computadora combina las direcciones en el SS y el SPRegistro BP El BP de 16 bits facilita la referencia de paraacutemetros los cuales son datos y direcciones transmitidos viacutea pila Los procesadores 80386 y posteriores tienen un BP ampliado de 32 bits llamado el registro EBP

Registros Indice Los registros SI y DI estaacuten disponibles para direccionamiento indexado y para sumas y restas

Registro SI El registro iacutendice fuente de 16 bits es requerido por algunas operaciones con cadenas (de caracteres) En este contexto el SI esta asociado con el registro DS Los procesadores 80386 y posteriores permiten el uso de un registro ampliado de 32 bits el ESIRegistro DI El registro iacutendice destino tambieacuten es requerido por algunas operaciones con cadenas de caracteres En este contexto el DI esta asociado con el registro ES Los procesadores 80386 y posteriores permiten el uso de un registro ampliado de 32 bits el EDI

Registro de Banderas De los 16 bits del registro de banderas nueve son comunes a toda la familia de procesadores 8086 y sirven para indicar el estado actual de la maquina y el resultado del procesamiento Muchas instrucciones que piden comparaciones y aritmeacutetica cambian el estado de las banderas algunas cuyas instrucciones pueden realizar pruebas para determinar la accioacuten subsecuente En resumen los bits de las banderas comunes son como sigue

OF (Overflow desbordamiento) Indica desbordamiento de un bitde orden alto (mas a la izquierda) despueacutes de una operacioacuten aritmeacuteticaDF (direccioacuten) Designa la direccioacuten hacia la izquierda o hacia la derecha para mover o comparar cadenas de caracteresIF (interrupcioacuten) Indica que una interrupcioacuten externa como la entrada desde el teclado sea procesada o ignoradaTF (trampa) Permite la operacioacuten del procesador en modo de un paso Los programas depuradores como el DEBUG activan esta bandera de manera que usted pueda avanzar en la ejecucioacuten de una sola instruccioacuten a un tiempo para examinar el efecto de esa instruccioacuten sobre los registros de memoriaSF (signo) Contiene el signo resultante de una operacioacuten aritmeacutetica (0 = positivo y 1 = negativo)ZF (cero) Indica el resultado de una operacioacuten aritmeacutetica o de comparacioacuten (0 = resultado diferente de cero y 1 = resultado igual a cero)AF (acarreo auxiliar) Contiene un acarreo externo del bit 3 en un dato de 8 bits para aritmeacutetica especializadaPF (paridad) Indica paridad par o impar de una operacioacuten en datos de 8 bits de bajo orden (mas a la derecha)CF (acarreo) Contiene el acarreo de orden mas alto (mas a la izquierda) despueacutes de una operacioacuten aritmeacutetica tambieacuten lleva el contenido del ultimo bit en una operacioacuten de corrimiento o de rotacioacuten Las banderas estaacuten en el registro de banderas en las siguientes posiciones

Las banderas mas importantes para la programacioacuten en ensamblador son O S Z y C para operaciones de comparacioacuten y aritmeacuteticas y D para operaciones de cadenas de caracteres Los procesadores 80286 y posteriores tienen algunas banderas usadas para propoacutesitos internos en especial las que afectan al modo protegido Los procesadores 80286 y posteriores tienen un registro extendido de banderas conocido como Eflags

Registros de PILA La pila es un aacuterea de memoria importante y por ello tiene en vez de uno dos registros que se usan como desplazamiento (offset) para apuntar a su contenido Se usan como complemento al registro y son

-SP- Stack Pointer Se traduce como puntero de pila y es el que se reserva el procesador para uso propio en instrucciones de manipulado de pila Por lo general el programador no debe alterar su contenido-BP- Base pointer Se usa como registro auxiliar El programador puede usarlo para su provechoClaro que estos nombres y tipos de registros son estaacutendar ya que cada fabricante puede utilizar otros registro que reemplacen a estos o los auxilien aun asiacute los fabricantes que usan otros registro tienen la misma funcioacuten que los anteriormente mencionados

Ejemplo Registros de uso general del 80868088 Tienen 16 bits cada uno y son ocho

1 AX = Registro acumulador dividido en AH y AL (8 bits cada uno) Usaacutendolo se produce (en general) una instruccioacuten que ocupa un byte menos que si se utilizaran otros registros de uso general Su parte maacutes baja AL tambieacuten tiene esta propiedad El uacuteltimo registro mencionado es el equivalente al acumulador de los procesadores anteriores (8080 y 8085) Ademaacutes hay instrucciones como DAA DAS AAA AAS AAM AAD LAHF SAHF CBW IN y OUT que trabajan con AX o con uno de sus dos bytes (AH o AL) Tambieacuten se utiliza este registro (junto con DX a veces) en multiplicaciones y divisiones

2 BX = Registro base dividido en BH y BL Es el registro base de propoacutesito similar (se usa para direccionamiento indirecto) y es una versioacuten maacutes potente del par de registros HL de los procesadores anteriores

3 CX = Registro contador dividido en CH y CL Se utiliza como contador en bucles (instruccioacuten LOOP) en operaciones con cadenas (usando el prefijo REP) y en desplazamientos y rotaciones (usando el registro CL en los dos uacuteltimos casos)

4 DX = Registro de datos dividido en DH y DL Se utiliza junto con el registro AX en multiplicaciones y divisiones en la instruccioacuten CWD y en IN y OUT para direccionamiento indirecto de puertos (el registro DX indica el nuacutemero de puerto de entradasalida)

5 SP = Puntero de pila (no se puede subdividir) Aunque es un registro de uso general debe utilizarse soacutelo como puntero de pila la cual sirve para almacenar las direcciones de retorno de subrutinas y los datos temporarios (mediante las instrucciones PUSH y POP) Al introducir (push) un valor en la pila a este registro se le resta dos mientras que al extraer (pop) un valor de la pila este a registro se le suma dos

6 BP = Puntero base (no se puede subdividir) Generalmente se utiliza para realizar direccionamiento indirecto dentro de la pila

7 SI = Puntero iacutendice (no se puede subdividir) Sirve como puntero fuente para las operaciones con cadenas Tambieacuten sirve para realizar direccionamiento indirecto

8 DI = Puntero destino (no se puede subdividir) Sirve como puntero destino para las operaciones con cadenas Tambieacuten sirve para realizar direccionamiento indirecto

Cualquiera de estos registros puede utilizarse como fuente o destino en operaciones aritmeacuteticas y loacutegicas

Indicadores (flags) Hay nueve indicadores de un bit en este registro de 16 bits Los cuatro bits maacutes significativos estaacuten indefinidos mientras que hay tres bits con valores determinados los bits 5 y 3 siempre valen cero y el bit 1 siempre vale uno (esto tambieacuten ocurriacutea en los procesadores anteriores)

CF (Carry Flag bit 0) Si vale 1 indica que hubo arrastre (en caso de suma) hacia o preacutestamo (en caso de resta) desde el bit de orden maacutes significativo del resultado Este indicador es usado por instrucciones que suman o restan nuacutemeros que ocupan varios bytes Las instrucciones de rotacioacuten pueden aislar un bit de la memoria o de un registro ponieacutendolo en el CFPF (Parity Flag bit 2) Si vale uno el resultado tiene paridad par es decir un nuacutemero par de bits a 1 Este indicador se puede utilizar para detectar errores en transmisionesAF (Auxiliary carry Flag bit 4) Si vale 1 indica que hubo arrastre o preacutestamo del nibble (cuatro bits) menos significativo al nibble maacutes significativo Este indicador se usa con las instrucciones de ajuste decimalZF (Zero Flag bit 6) Si este indicador vale 1 el resultado de la operacioacuten es cero SF (Sign Flag bit 7) Refleja el bit maacutes significativo del resultado Como los nuacutemeros negativos se representan en la notacioacuten de complemento a dos este bit representa el signo 0 si es positivo 1 si es negativoTF (Trap Flag bit 8) Si vale 1 el procesador estaacute en modo paso a paso En este modo la CPU automaacuteticamente genera una interrupcioacuten interna despueacutes de cada instruccioacuten permitiendo inspeccionar los resultados del programa a medida que se ejecuta instruccioacuten por instruccioacutenIF (Interrupt Flag bit 9) Si vale 1 la CPU reconoce pedidos de interrupcioacuten externas enmascarables (por el pin INTR) Si vale 0 no se reconocen tales interrupciones Las interrupciones no enmascarables y las internas siempre se reconocen independientemente del valor de IF DF (Direction Flag bit 10) Si vale 1 las instrucciones con cadenas sufriraacuten auto-decremento esto es se procesaraacuten las cadenas desde las direcciones maacutes altas de memoria hacia las maacutes bajas Si vale 0 habraacute auto-incremento lo que quiere decir que las cadenas se procesaraacuten de izquierda a derechaOF (Overflow flag bit 11) Si vale 1 hubo un desborde en una operacioacuten aritmeacutetica con signo esto es un diacutegito significativo se perdioacute debido a que tamantildeo del resultado es mayor que el tamantildeo del destino

El procesador Z80 Registros de propoacutesito general El Z80 posee 14 registros de propoacutesito general de 8 bits denominados A B C D H L y A B C D H L Solamente un set de siete registros y el correspondiente registro de Flags F pueden estar activos al mismo tiempo Una instruccioacuten especial selecciona A y F o A y F mientras que otra instruccioacuten selecciona B C D E H L o C D E H LEl programador puede cambiar raacutepidamente de un conjunto de registros de propoacutesito general a otro Esto proporciona una mayor capacidad de almacenamiento en registros El acceso a datos presentes en registros de la CPU es mucho maacutes raacutepido que el acceso a datos en memoriaLos registros pueden agruparse de a pares formando registros de 16 bits Estos son los pares BC DE y HL (sus equivalentes primas tambieacuten pueden agruparse)

Flags

Aunque los Flags existen fiacutesicamente dentro de la CPU estaacuten agrupados loacutegicamente formando un registro Los Flags del Z80 son los siguientes

Flag de Cero(Z) Toma el valor 1 si el resultado de una operacioacuten es cero Es el bit seis Flag de signo(S) Toma el valor 1 si el resultado de una operacioacuten es negativo Es el bit siete Flag de Carry(C) Este flag es afectado por las instrucciones de desplazamiento y es puesto en 1 oacute 0 seguacuten el valor del bit desplazado Tambieacuten es afectado por las operaciones aritmeacuteticas Este flag es el bit ceroFlag de Paridad y overflow(PV) En el caso de paridad se pone en 1 si el resultado de una operacioacuten posee un nuacutemero par de unos Cuando el flag PV se usa para representar overflow el flag se pone en 1 si ocurre un overflow despueacutes de una operacioacuten aritmeacutetica Este flag es el bit 2Flag H y N Son dos Flip Flop que no pueden ser examinados por las instrucciones de salto condicional El Z80 los usa para las operaciones BCD H representa el rebalse que genera considerando los cuatro bits menos significativos del resultado y N es el flag de resta el cual se activa para indicar si la uacuteltima instruccioacuten ejecutada fue suma o resta En el caso general una instruccioacuten de resta coloca en 1 el flag N y una instruccioacuten de suma lo coloca en 0 Los Flags H y N son los bits 4 y 1 respectivamente

Registros de propoacutesito especial Program Counter Es un registro de 16 bits que indica la direccioacuten de la proacutexima instruccioacuten ejecutar Las instrucciones del Z80 pueden contar de uno dos tres o cuatro bytes

Stack-Pointer Es un registro de 16 bits que indica la direccioacuten de una memoria RAM externa denominada Stack El objetivo de esta aacuterea de memoria es proporcionar un medio de almacenamiento temporal de los registros del usuario registro de Flags y del program Counter La provisioacuten de Stack es fundamental para operaciones tales como los llamados a sub-rutinas e interrupcionesRegistros iacutendices IX e IY Estos registros son de 16 bits disentildeados para permitir un direccionamiento indexado en los programas del Z80 Cuando se ejecuta una instruccioacuten en un modo de direccionamiento indexado se usa uno de los dos registros iacutendices para calcular la direccioacuten del operandoRegistro de interrupciones I Es un registro de 8 bits que puede ser cargado para especificar el byte maacutes significativo de una direccioacuten de memoria El byte menos significativo es proporcionado por el dispositivo que solicita la interrupcioacutenRegistro de refresh de memoria R Es un registro especial disentildeado para proporcionar un refresh automaacutetico de las memorias RAM dinaacutemicas Registro de instrucciones El registro de instrucciones tiene por misioacuten almacenar el coacutedigo de operacioacuten de la instruccioacuten leiacuteda desde memoria Este coacutedigo es descodificado y con esta informacioacuten se dirigen todos los micro-pasos httpwwwoocitiesorgmxantrahxgdocumentosorg_compregistrohtml

Registros del procesadorDentro del procesador hay un conjunto de registros que ofrecen un nivel de memoria que es maacutes raacutepido y pequentildeo que la memoria principal Los registros del procesador sirven para dos funciones Registros visibles de usuario Un programador de lenguaje de maacutequina o ensamblador puede minimizar las referencias a memoria principal mediante un uso oacuteptimo de estos registros Con lenguajes de alto nivel un compilador que optimice coacutedigo intentaraacute hacer una seleccioacuten inteligente de queacute variables asignar a registros y cuaacuteles a ubicaciones de la memoria principal Algunos lenguajes de alto nivel como C permiten que el programador indique al compilador queacute variables se deben almacenar en registros Registros de control y de estado Son utilizados por el procesador para el control de las operaciones o por rutinas privilegiadas del sistema operativo para controlar la ejecucioacuten de los programas No hay una separacioacuten clara de los registros en estas dos categoriacuteas Por ejemplo en algunas maacutequinas el contador de programa es visible para los usuarios pero en otras muchas no lo es Sin embargo para el propoacutesito de la discusioacuten que viene a continuacioacuten es conveniente emplear estas categoriacuteas Registros visibles de usuario Un registro visible de usuario es aqueacutel que puede ser referenciado por medio del lenguaje de maacutequina que ejecuta el procesador y es por lo general accesible para todos los programas incluyendo tanto los programas de aplicacioacuten como los del

sistema Las clases de registro que normalmente estaacuten disponibles son los registros de datos los registros de direccioacuten y los registros de coacutedigos de condicioacuten

Los registros de datosPueden ser asignados por el programador a diversas funciones En algunos casos son de propoacutesito general y pueden ser empleados por cualquier instruccioacuten de maacutequina que lleve a cabo operaciones sobre los datos Sin embargo suelen ponerse ciertas restricciones a menudo Por ejemplo puede haber registros dedicados a operaciones en coma flotante

Los registros de direccioacutenContienen direcciones en la memoria principal de datos e instrucciones o una parte de la direccioacuten que se utiliza en el caacutelculo de la direccioacuten completa Estos registros pueden ser de propoacutesito general o pueden estar dedicados a un modo especiacutefico de direccionamiento Entre los ejemplos se incluyen

Registro iacutendice El direccionamiento indexado es un modo comuacuten de direccionamiento que implica sumar un iacutendice a un valor base para obtener la direccioacuten efectiva

Puntero de segmento Con direccionamiento segmentado la memoria se divide en segmentos que son bloques de palabras de tamantildeo variable Una referencia a memoria consta de una referencia a un segmento particular y un desplazamiento dentro del segmento En este modo se utiliza un registro que alberga una direccioacuten base (ubicacioacuten inicial) de un segmento Puede haber varios registros de este tipo por ejemplo uno para el sistema operativo (es decir cuando se ejecuta coacutedigo del sistema operativo en el procesador) y otro para la aplicacioacuten que estaacute en ejecucioacuten

Puntero de pila Si hay un direccionamiento de pila visible para los usuarios la pila estaraacute por lo general en la memoria principal existiendo un registro dedicado a sentildealar la cima de la pila

Esto permite el uso de instrucciones que no contienen ninguacuten campo de direccioacuten tales como push (poner) y pop (sacar) Una uacuteltima categoriacutea de registros que son al menos parcialmente visibles para los usuarios son aquellos que contienen coacutedigos de condicioacuten (tambieacuten denominados indicadores o flags) Los coacutedigos de condicioacuten son bits activados por el hardware del procesador como resultado de determinadas operaciones

Por ejemplo una operacioacuten aritmeacutetica puede producir un resultado positivo negativo cero o desbordamiento Ademaacutes de almacenar el resultado de esta operacioacuten en un registro o en memoria tambieacuten se activaraacute un coacutedigo de condicioacuten Este coacutedigo puede consultarse posteriormente como parte de una operacioacuten de salto condicional

Los bits de coacutedigo de condicioacuten se agrupan en uno o maacutes registros Estos forman generalmente parte de un registro de control En general las instrucciones de maacutequina permiten leer estos bits mediante referencias impliacutecitas pero no pueden ser alterados por el programador

En algunas maacutequinas una llamada a un procedimiento o subrutina provocaraacute que los registros visibles de usuario se salven automaacuteticamente para luego restaurarlos al retomar Este proceso de salvar y restaurar lo lleva a cabo el procesador como parte de la ejecucioacuten de las instrucciones de llamada y retomo Esto permite que cada procedimiento pueda usar los registros de forma independiente En otras maacutequinas es responsabilidad del programador salvar los contenidos de los registros de usuario visibles que sean relevantes antes de hacer la llamada a un procedimiento incluyendo instrucciones en el programa con tal propoacutesito Asiacute pues las instrucciones de salvar y restaurar pueden ser llevadas a cabo por el hardware o por el software dependiendo de la maacutequina

Registros de control y de estado Varios registros se emplean para controlar las operaciones del procesador En la mayoriacutea de las maacutequinas la mayor parte de estos registros no son visibles para los usuarios Algunos de ellos pueden estar accesibles a las instrucciones de maacutequina ejecutadas en un modo de control o modo del sistemaPor supuesto maacutequinas diferentes tendraacuten organizaciones diferentes de registros y podraacuten usar terminologiacuteas distintas

Ademaacutes de los registros MAR MBR IOAR y IOBR mencionados anteriormente los siguientes registros son esenciales en la ejecucioacuten de instrucciones Contador de programa (PC Program Counter) Contiene la direccioacuten de la instruccioacuten a ser leiacuteda Registro de instruccioacuten (IR Instruction Regiacutester) Contiene la uacuteltima instruccioacuten leiacuteda Todos los disentildeos de procesadores

incluyen ademaacutes un registro o conjunto de registros conocidos a menudo como palabra de estado del programa (PSW Program Status Word) que contiene informacioacuten de estado Normalmente la PSW contiene coacutedigos de condicioacuten junto a otra informacioacuten de estado Entre los campos e indicadores maacutes comunes se incluyen los siguientes

Signo Contiene el bit del signo de la uacuteltima operacioacuten aritmeacutetica efectuada Cero Se activa cuando el resultado de una operacioacuten aritmeacutetica es cero

Acarreo Se activa cuando como resultado de una suma o una resta se produce un acarreo maacutes allaacute del bit maacutes significativo Se utiliza en operaciones aritmeacuteticas de maacutes de una palabra

Igualdad Se activa si una comparacioacuten loacutegica da como resultado la igualdad Desbordamiento Empleado para sentildealar un desbordamiento aritmeacutetico Habilitarinhahilitar interrupcioacutenes Empleado para habilitar o inhabilitar interrupciones Cuando Las interrupciones estaacuten

inhabilitadas el procesador las ignora Esto es muy deseable cuando el sistema operativo estaacute ocupado en el tratamiento de otra interrupcioacuten

Supervisor Indica si el procesador estaacute ejecutando en modo supervisor o en modo usuario Ciertas instrucciones privilegiadas soacutelo se pueden ejecutar en modo supervisor y soacutelo se puede tener acceso a ciertas aacutereas de memoria en modo supervisor

En el disentildeo de un procesador especiacutefico se pueden encontrar una serie de registros relacionados con el estado y el control Ademaacutes de la PSW puede haber un puntero a un bloque de memoria que contenga informacioacuten de estado adicional En maacutequinas que utilizan varios tipos de interrupcioacuten se puede ofrecer una serie de registros con punteros a cada rutina de tratamiento de interrupcioacuten Si se utiliza una pila para implementar ciertas funciones (por ejemplo las llamadas a procedimientos) entonces se necesita un puntero a la pila Por uacuteltimo los registros tambieacuten pueden utilizarse para el control de las operaciones de ES Una serie de factores inciden en el disentildeo de la organizacioacuten de los registros de control y estado Un punto clave es el soporte del sistema operativo Cierto tipo de informacioacuten de control es de utilidad especiacutefica para el sistema operativo Si el disentildeador del procesador dispone de una visioacuten funcional del sistema operativo la organizacioacuten de los registros puede adaptarse convenientementeOtra decisioacuten clave del disentildeo es la asignacioacuten de informacioacuten de control a los registros y la memoria Es habitual dedicar los primeros centenares o miles de palabras (las maacutes bajas) de memoria para el control El disentildeador debe decidir la cantidad de informacioacuten de control que debe residir en los raacutepidos y costosos registros junto a la cantidad que debe permanecer en memoria principal que es maacutes lenta y barata

httpslamiradelsniperwordpresscom20120820registros-del-procesador

1 Los registros

El procesador necesita para su funcionamiento de ciertas aacutereas de almacenamiento que aquiacute se llaman registros y que son de dimensiones miacutenimas [3] sin embargo tienen la ventaja de su rapidez Comparados con los accesos a RAM los de registro son como miacutenimo 10 veces maacutes veloces

El 8088 dispone de catorce registros de 16 bits que se agrupan en cuatro grupos y que reciben nombres especiales (precisamente los que se utilizan para designarlos en lenguaje ensamblador)

sect311 Registros de uso general

Existen 4 registros denominados AX BX CX y DX que en realidad tienen asignados usos caracteriacutesticos aunque pueden ser utilizados a discrecioacuten para cualquier cosa que necesitemos

AX es denominado acumulador suele contener uno de los operandos que intervienen en las operaciones aritmeacuteticas y loacutegicas y despueacutes de esta el resultado de la operacioacuten En general

las instrucciones que trabajan con este registro (o su mitad inferior) tienen un microcoacutedigo maacutes simple que la misma instruccioacuten ejecutada con otro registro

BX es el registro base suele contener la direccioacuten de inicio de una tabla de valores

CX es denominado contador Las instrucciones de bucle (LOOP) utilizan este registro como contador

DX es un registro de datos multiuso Se utiliza en operaciones de multiplicacioacuten y divisioacuten junto con AX En operaciones de entradasalida de puertos INOUT su mitad inferior DL contiene el

nuacutemero de puerto ( 25)

Aunque estos cuatro registros son de 16 bits (como los 10 restantes) [6] en caso necesario pueden ser utilizados en dos mitades (nibbles) High y Low de 8 bits con lo que puede considerarse que existen 12 registros de uso general (no simultaacuteneos) los anteriores y sus mitades AH AL BH BL CH CL DH y DL

sect312 Registros de segmento

Se dispone de cuatro registros que sirven para contener las direcciones de otros tantos segmentos (zonas de 64 KB de memoria) Utilizaacutendolos en conjuncioacuten con otros registros que sentildealan las

direcciones concretas dentro de estos segmentos (los desplazamientos ) permiten manejar la totalidad de la memoria direccionable (el bus de direcciones es de 20 bits) Ver al respecto el epiacutegrafe

Direccionamiento segmentado ( 51)

Segmento de coacutedigo CS (Code segment) Sentildeala la direccioacuten del segmento de coacutedigo del

programa que se estaacute ejecutando ( E132) Segmento de datos DS (Data segment) Sentildeala la direccioacuten del segmento de datos del

programa en ejecucioacuten ( E132) Segmento de pila SS (Stack segment) Sentildeala la direccioacuten del segmento donde estaacute la pila

del programa ( E132) Segmento extra ES (Extra segment) Es un segmento auxiliar a los anteriores se utiliza para

sentildealar espacio extra en alguno de los segmentos o para almacenar momentaacuteneamente direcciones intermedias

Nota Puede ocurrir que programas pequentildeos utilicen el mismo segmento para el coacutedigo los datos y la pila

sect313 Registros de puntero

Son 5 registros destinados a contener direcciones estas direcciones son desplazamientos dentro de los

segmentos indicados por los registros de segmento (ver figura 51 Fig2)

El primero denominado indistintamente puntero de instruccioacuten IP (Instruccioacuten pointer) y contador de programa PC(Program counter) indica el desplazamiento (dentro del segmento de coacutedigo CS) de la proacutexima instruccioacuten a ejecutar

El puntero de pila SP (Stack Pointer) sentildeala el desplazamiento del final de la pila dentro del segmento de pila SS En caso necesario la pila puede crecer a partir de este punto de forma que por ejemplo una nueva invocacioacuten de funcioacuten crearaacute un nuevo registro de activacioacuten que comenzaraacute en este punto

El puntero base BP (Base pointer) sentildeala el desplazamiento (dentro del segmento de pila SS) donde se encuentra el origen de la zona ocupada por las variables dinaacutemicas

Existen dos registros denominados de iacutendice en razoacuten de su utilizacioacuten muy particular el iacutendice fuente SI (Source index) y el iacutendice destino DI (Destination index) Generalmente estos dos registros se utilizan con alguno de los registros de uso general y con ciertas

instrucciones especiacuteficamente pensadas para transferir datos (dentro de un rango de posiciones de memoria) desde un punto inicial de un segmento de datos a otro

Ver en la paacutegina adjunta un ejemplo relativo al uso de punteros ( 32 Ejemplo-2)

sect314 Registro de estado

Existe un registro especial el registro de estado (FLAGS) en el que 9 de los 18 bits actuacutean como semaacuteforos (indicadores del estado del procesador y del resultado de determinadas operaciones) Por ejemplo si despueacutes de una suma aritmeacutetica hay o no desbordamiento del bit maacutes significativo

Los nombres y situacioacuten de cada uno dentro de la palabra de 16 bits se muestran en la figura 2

Cada bits individual puede estar activo (1) o inactivo (0) y tiene un identificador que termina en F(Flag) Son los siguientes

Bit Indicador de Uso

CF Acarreo (Carry Flag)

Indicador de arrastre del bit de mayor orden que puede ocurrir en las operaciones aritmeacuteticas suma y resta

PF Paridad (Parity Flag)

Si estaacute activo Indica un nuacutemero par de bits activos (bits cuyo contenido es 1) Esta informacioacuten es uacutetil cuando el procesador controla transmisiones de datos

AF Acarreo auxiliar Indicador de ajuste en operaciones aritmeacuteticas con cantidades

BCD ( E01w1)

ZF Cero (Zero Flag) Estaacute activo si el resultado de operacioacuten es cero o resultado de comparacioacuten igual

SF Signo (Sign Flag) Si estaacute activo indica que el resultado de operacioacuten o de comparacioacuten son negativos [5]

TF Detencioacuten (Trap Flag)

Si estaacute activo el procesador genera automaacuteticamente una interrupcioacuten despueacutes de la ejecucioacuten de cada instruccioacuten lo que permite controlar paso a paso la ejecucioacuten del programa Este bit debe estar normalmente inactivo (a 0)

IF Interrupcioacuten (Interrupt Flag)

Este bit controla el estado del sistema de interrupciones

enmascarables ( 24) Cuando estaacute activo (1) permite las

interrupciones el estado inactivo (0) las deshabilita

DF Direccioacuten (Direction Flag)

Indica la direccioacuten de las operaciones

OF Desbordamiento (Overflow Flag)

Sentildeala desbordamiento aritmeacutetico

Nota Los usuarios de MS-DOS o Windows puede usar el programa DEBUG ( 171) para inspeccionar y modificar el contenido de los registros de la siguiente forma

Invocar DEBUG desde una ventana DOS (suponemos que estamos en Windows el prompt es un guioacuten -)

introducir el comando R (pedimos que nos muestre el contenido de los registros)

Salir de Debug con Q

En mi PC la respuesta al comando tiene el siguiente aspecto

AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=1779 ES=1779 SS=1779 CS=1779 IP=0100 NV UP EI PL NZ NA PO NC

Los valores estaacuten expresados en hexadecimal La uacuteltima secuencia de caracteres (NV UP EI PL NZ NA PO NC) muestra el contenido del registro de estado (el bit TF de detencioacuten no se muestra) el significado de la notacioacuten utilizada es el siguiente

Bit Indicador de Indicativo si bit 1 Indicativo si bit 0

CF Acarreo CY (Carry yes) NC (No Carry)

PF Paridad PE (Parity Even) paridad par PO (Parity Odd) paridad impar

AF Acarreo auxiliar AC (Auxiliar Carry) NA (No Auxiliar)

ZF Cero ZR (Zero) NZ (No Zero)

SF Signo NG (Negative) negativo PL (Plus) positivo

IF Interrupcioacuten EI (Enabled Interrupt) activa DI (Disabled Interrupt) desactivada

DF Direccioacuten DN (Down) decremento UP incremento

OF Desbordamiento OV (Overflow) NV (No overflow)

Tambieacuten es posible inspeccionar el contenido de un solo registro antildeadiendo al comando R el nombre del registro Por ejemplo el comando R IP muestra el contenido del contador de programa Los nombres que pueden utilizarse para los registros son los siguientes AX BX CX DX SP BP SI DI DS ES SS CS IP y F (este uacuteltimo para el registro de estado)

Despueacutes de un comando de este tipo DEBUG responde con un prompt distinto del habitual para indicar que debe introducir el nuevo valor que desea para el registro Pulsando INTRO se vuelve al modo normal

sect315 Comentario

Observe que tanto el registro contador de programa IP como el de base BP siempre contienen direcciones de memoria (los otros pueden contener direcciones o datos) Ni los registros de segmento ni los de puntero se pueden dividir en mitades (como los de uso general)

httpwwwzatorcomHardwareH3_2htm

Definiciones de registros Definicioacuten 1 un registro es una memoria de alta velocidad y poca capacidad integrada en el microprocesador que permite guardar transitoriamente y acceder a valores muy usados generalmente en operaciones matemaacuteticas Definicioacuten 2 un registro es una porcioacuten de memoria ultrarraacutepida de poca capacidad e integrado al microprocesador que permite almacenar y acceder datos usados frecuentemente Se emplean para aumentar la velocidad de ejecucioacuten de los programas

3 Funcioacuten de los registros Los registros estaacuten en la cumbre de la jerarquiacutea de memoria y son la manera maacutes raacutepida que tiene el sistema de almacenar datos Los registros se miden generalmente por el nuacutemero de bits que almacenan por ejemplo un registro de 8 bits o un registro de 32 bitsldquo La CPU contiene un conjunto de localidades de almacenamiento temporal de datos de alta velocidad llamada registro Algunos de los registros estaacuten dedicados al control y solo la unidad de control tiene acceso a ellos Los registros restantes son los registros de uso general y el programador es el usuario que tiene acceso a ellos

4 Los nombres de los registros describen la forma como algunas instrucciones enensamblador las emplean

5 Algunos registros basicos Dentro del conjunto baacutesico de registros de control se deben incluir a los siguientesa middot Contador de programa (PC)b middot Registro de direcciones de la memoria (MAR)c middot Registro de datos (RD)d middot Registro de instrucciones (IR)e middot Palabra de estado de programa (PSW)

6 Funcioacuten del PC La funcioacuten del PC consiste en seguir la pista de la instruccioacuten por buscar (capturar) en el siguiente ciclo de maquina por lo tanto contiene la direccioacuten de la siguiente instruccioacuten por ejecutar El PC es modificado dentro del ciclo de buacutesqueda de la instruccioacuten actual mediante la suma de una constante El numero que se agrega al PC es la longitud de una instruccioacuten en palabras Por lo tanto si una instruccioacuten tiene una palabra de longitud se agrega 1 al PC si una instruccioacuten tiene dos palabras de largo se agrega 2 y asiacute sucesivamente

7 Funcioacuten de MAR Registro de direcciones de la memoria (MAR) funciona como registro de enlace entre la CPU y el canal de direcciones Cuando se logra el acceso a la memoria la direccioacuten es colocada en el MAR por la unidad de control y ahiacute permanece hasta que se completa la transaccioacuten El numero de bit que hay en el MAR es igual al del canal de direcciones La diferencia que existe entre el PC y el MAR es que durante el ciclo de ejecucioacuten de una instruccioacuten el PC y el MAR sirven al mismo fin Sin embargo muchas de las instrucciones de la maquina hacen referencia a la memoria y operan con los datos que

estaacuten en ella Como la direccioacuten de los datos suele ser diferente de la instruccioacuten siguiente se necesita el MAR

8 Funcioacuten de RD Registro de datos la funcioacuten del RD consiste en proporcionar un aacuterea de almacenamiento temporal (memoria intermedia acumulada o buffer) de datos que se intercambian entre la PCU y la memoria Los datos pueden ser instrucciones (obtenidos en el ciclo de ejecucioacuten) o datos del operando (obtenidos en el ciclo de ejecucioacuten) Debido a su conexioacuten directa con el canal de datos el RD contiene el mismo numero de bit que dicho canal

9 Funcioacuten de IR Registro de instrucciones (IR) es un registro que conserva el coacutedigo de operacioacuten de la instruccioacuten en todo el ciclo de la maquina El coacutedigo es empleado por la unidad de control de la CPU para generar las sentildeales apropiadas que controla le ejecucioacuten de la instruccioacuten La longitud del ER es la longitud en bit del coacutedigo de operacioacuten

10 Funcioacuten de PSW Palabra de estado de programa (PSW) la palabra de estado o condicioacuten de programa almacena informacioacuten pertinente sobre el programa que este ejecutaacutendose Por ejemplo al completarse una funcioacuten de la unidad aritmeacutetica loacutegica se modifica un conjunto de bit llamados coacutedigos (o sentildeales de condicioacuten) Estos bit especifican si el resultado de una operacioacuten aritmeacutetica fue 0 o negativo o si el resultado se desbordoacute Ademaacutes el PSW contiene bit que hacen posible que la computadora responda a solicitudes de servicio asincroacutenicas generadas por dispositivos de Entrada-Salida o condiciones de error interno Estas sentildeales se denominan interrupciones

  • 1 Los registros
  • sect311 Registros de uso general
  • sect312 Registros de segmento
  • sect313 Registros de puntero
  • sect314 Registro de estado
  • sect315 Comentario
Page 3: Registros de procesador.docx

O D I T S Z A P C

BanderaLas banderas maacutes comunes son las siguientesOF (Over flow flag desbordamiento)Indica el desbordamiento de un bit de orden alto (mas a la izquierda) despueacutes de una operacioacuten aritmeacuteticaDF (Direction flag Direccion)Designa la direccioacuten hacia la izquierda o hacia la derecha para mover o comparar cadenas de caracteresIF (Interruption flag Interrupcion)Indica que una interrupcioacuten externa como la entrada desde el teclado sea procesada o ignoradaTF (Trap flag Trampa)Examina el efecto de una instruccioacuten sobre los registros y la memoria Los programas depuradores como DEBUG activan esta bandera de manera que pueda avanzar en la ejecucioacuten de una sola interrupcioacuten a un tiempoSF (Sign flag Signo)Contiene el signo resultante de una operacioacuten aritmeacutetica (0=positivo y 1= negativo)ZF (Zero flag Zero)Indica el resultado de una operacioacuten aritmeacutetica o de comparacioacuten (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 aritmeacutetica especializadaPF (Parity flag Paridad)Indica paridad par o impar de una operacioacuten 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) despueacutes de una operacioacuten aritmeacutetica tambieacuten lleva el contenido del ultimo bit en una operacioacuten de corrimiento o rotacioacutenCuadro ComparativoTIPOS DE REGISTROS FUNCION

Registros de Segmento Un registro de segmento tiene 16 bits de longitud y facilita un aacuterea de memoria para el direccionamiento conocida como el segmento actual

Registros de Apuntador de Instrucciones Este registro esta compuesto por 16 bits y contiene el desplazamiento de la siguiente instruccioacuten que se va a ejecutar Los procesadores 80386 y posteriores tiene un IP ampliado de 32 bits llamado EIP

Registros Apuntadores Permiten al sistema accesar datos al segmento de la pila Los procesadores 80386 tiene un apuntador de pila de 32 bits llamado ESP El sistema maneja de manera automaacutetica estos registros

Registros de Propoacutesito General Son los caballos de batalla del sistema y pueden ser direccionados como una palabra o como una parte de un bytes Los procesadores 80386 y posteriores permiten el uso de todos los registros de propoacutesitos general mas sus versiones ampliadas de 32 bits llamados EAX EBXECX y EDX

Registros Indices Sirven para el direccionamiento de indexado y para las operaciones de sumas y restas

Registros de Banderas Sirven para indicar el estado actual de la maquina y el resultado del procesamiento De los 16 bits de registro de bandera 9 son comunes a toda la familia de los procesadores 8086

Ejemplo De Representacioacuten De Los RegistrosDespueacutes de haber conceptualizado e interpretado los diferente tipos de registro nos vemos en la necesidad de dar un ejemplo no muy praacutectico 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 pequentildea porcioacuten de eacutel se muestran como se colocan dentro los diferentes tipos registros TITLE P17HANRD(EXE) Lectura secuencial de registrosMODEL SMALLSTACK 64------------------------------------------------------------------------------------------DATAENDCDE DB 00 FIN DEL INDICARDOR DE PROCESOHANDLE DW IOAREA DB 32 DUP(acute acute)

OPENMSG DB acute Open error acute 0DH 0AHPATHNAM DB acuteDNAMEFILESRTacute 0READMSD DB acute Read error acute 0DH 0AHROW DB 00---------------------------------------------------------------------------------------------CODEBEGIN PROC FARMOV AXdata inicializaMOV DSAX registro deMOV ESAX segmentoMOV AX0600H Autor

Oscar borja

Leer maacutes httpwwwmonografiascomtrabajos7regiregishtmlixzz3YhKCX7bC

Registros de un microprocesadorEn arquitectura de ordenadores un registro es una memoria de alta velocidad y poca capacidad integrada en el microprocesador que permite guardar transitoriamente y acceder a valores muy usados generalmente en operaciones matemaacuteticasLos registros estaacuten en la cumbre de la jerarquiacutea de memoria y son la manera maacutes raacutepida que tiene el sistema de almacenar datos Los registros se miden generalmente por el nuacutemero de bits que almacenan por ejemplo un registro de 8 bits o un registro de 32 bits Los registros generalmente se implementan en un banco de registros pero antiguamente se usaban biestables individuales memoria SRAMo formas aun maacutes primitivasEl teacutermino es usado generalmente para referirse al grupo de registros que pueden ser directamente indexados como operandos de una instruccioacuten como estaacute definido en el conjunto de instrucciones Sin embargo los microprocesadores tienen ademaacutes muchos otros registros que son usados con un propoacutesito especiacutefico como el contador de programa Por ejemplo en la arquitectura IA32 el conjunto de instrucciones define 8 registros de 32 bits

Tipos de registro

Los registros de datos son usados para guardar nuacutemeros enteros En algunas computadoras antiguas existiacutea un uacutenico registro donde se guardaba toda la informacioacuten llamado acumulador

Los registros de memoria son usados para guardar exclusivamente direcciones de memoria Eran muy usados en la arquitectura Harvard ya que muchas veces las direcciones teniacutean un tamantildeo de palabra distinto que los datos

Los registros de propoacutesito general (en ingleacutes GPRs o General Purpose Registers) pueden guardar tanto datos como direcciones Son fundamentales en la arquitectura de von Neumann La mayor parte de las computadoras modernas usa GPR

Los registros de coma flotante son usados para guardar datos en formato de coma flotante Los registros constantes tienen valores creados por hardware de soacutelo lectura Por ejemplo en MIPS el registro cero

siempre vale 0 Los registros de propoacutesito especiacutefico guardan informacioacuten especiacutefica del estado del sistema como el puntero de pila o

el registro de estado

REGISTROS DEL PROCESADORLos registros del procesador se emplean para controlar instrucciones en ejecucioacuten manejar direccionamiento de memoria y proporcionar capacidad aritmeacutetica Los registros son direccionables por medio de un nombre Los bits por convencioacuten se numeran de derecha a izquierda como en 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0Los registros internos del procesador se puede clasificar en 6 tipos diferentes Registros de segmento

1 Registros de propoacutesito general2 Registros de apuntadores

3 Registros de banderas4 Registros de Puntero de instruccioacuten5 Registros de Pila

Registros de segmento Un registro de segmento tiene 16 bits de longitud y facilita un aacuterea de memoria para direccionamiento conocida como el segmento actualRegistro CS El DOS almacena la direccioacuten inicial del segmento de coacutedigo de un programa en el registro CS Esta direccioacuten de segmento mas un valor de desplazamiento en el registro apuntador de instruccioacuten (IP) indica la direccioacuten de una instruccioacuten que es buscada para su ejecucioacutenRegistro DS La direccioacuten inicial de un segmento de datos de programa es almacenada en el registro DS En teacuterminos sencillos esta direccioacuten mas un valor de desplazamiento en una instruccioacuten genera una referencia a la localidad de un byte especifico en el segmento de datosRegistro SS El registro SS permite la colocacioacuten en memoria de una pila para almacenamiento temporal de direcciones y datos El DOS almacena la direccioacuten de inicio del segmento de pila de un programa en le registro SS Esta direccioacuten de segmento mas un valor de desplazamiento en el registro del apuntador de pila (SP) indica la palabra actual en la pila que esta siendo direccionadaRegistros ES Alguna operaciones con cadenas de caracteres (datos de caracteres) utilizan el registro extra de segmento para manejar el direccionamiento de memoria En este contexto el registro ES esta asociado con el registro DI (iacutendice) Un programa que requiere el uso del registro ES puede inicializarlo con una direccioacuten de segmento apropiadaRegistros FS y GS Son registros extra de segmento en los procesadores 80386 y posteriores

Registros de propoacutesito general Los registros de propoacutesito general AX BX CX y DX son los caballos de batalla del sistema Son uacutenicos 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 su nombreRegistro AX El registro AX el acumulador principal es utilizado para operaciones que implican entradasalida y la mayor parte de la aritmeacutetica Por ejemplo las instrucciones para multiplicar dividir y traducir suponen el uso del AX Tambieacuten algunas operaciones generan coacutedigo mas eficiente si se refieren al AX en lugar de a los otros registrosRegistro BX El BX es conocido como el registro base ya que es el uacutenico registro de propoacutesito general que puede ser iacutendice para direccionamiento indexado Tambieacuten es comuacuten emplear el BX para caacutelculosRegistro DX El DX es conocido como l registro de datos Alguna operaciones de entradasalida requieren uso y las operaciones de multiplicacioacuten y divisioacuten con cifras grandes suponen al DX y al AX trabajando juntos

Registro de Apuntador de Instrucciones El registro apuntador de instrucciones (IP) de 16 bits contiene el desplazamiento de direccioacuten de la siguiente instruccioacuten que se ejecuta El IP esta asociado con el registro CS en el sentido de que el IP indica la instruccioacuten actual dentro del segmento de coacutedigo que se esta ejecutando actualmente Los procesadores 80386 y posteriores tienen un IP ampliado de 32 bits llamado EIPEn el ejemplo siguiente el registro CS contiene 25A4[0]H y el IP contiene 412H Para encontrar la siguiente instruccioacuten que seraacute ejecutada el procesador combina las direcciones en el CS y el IPSegmento de direccioacuten en el registro CS 25A40H Desplazamiento de direccioacuten en el registro IP + 412H Direccioacuten de la siguiente instruccioacuten 25E52H

Registros Apuntadores Los registros SP (apuntador de la pila) Y BP (apuntador de base) estaacuten asociados con el registro SS y permiten al sistema accesar datos en el segmento de la pila

Registro SP El apuntador de la pila 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 Los procesadores 80386 y posteriores tienen un apuntador de pila de 32 bits el registro ESP El sistema maneja de forma automaacutetica estos registrosEn el ejemplo siguiente el registro SS contiene la direccioacuten de segmento 27B3[0]H y el SP el desplazamiento 312H Para encontrar la palabra actual que esta siendo procesada en la pila la computadora combina las direcciones en el SS y el SPRegistro BP El BP de 16 bits facilita la referencia de paraacutemetros los cuales son datos y direcciones transmitidos viacutea pila Los procesadores 80386 y posteriores tienen un BP ampliado de 32 bits llamado el registro EBP

Registros Indice Los registros SI y DI estaacuten disponibles para direccionamiento indexado y para sumas y restas

Registro SI El registro iacutendice fuente de 16 bits es requerido por algunas operaciones con cadenas (de caracteres) En este contexto el SI esta asociado con el registro DS Los procesadores 80386 y posteriores permiten el uso de un registro ampliado de 32 bits el ESIRegistro DI El registro iacutendice destino tambieacuten es requerido por algunas operaciones con cadenas de caracteres En este contexto el DI esta asociado con el registro ES Los procesadores 80386 y posteriores permiten el uso de un registro ampliado de 32 bits el EDI

Registro de Banderas De los 16 bits del registro de banderas nueve son comunes a toda la familia de procesadores 8086 y sirven para indicar el estado actual de la maquina y el resultado del procesamiento Muchas instrucciones que piden comparaciones y aritmeacutetica cambian el estado de las banderas algunas cuyas instrucciones pueden realizar pruebas para determinar la accioacuten subsecuente En resumen los bits de las banderas comunes son como sigue

OF (Overflow desbordamiento) Indica desbordamiento de un bitde orden alto (mas a la izquierda) despueacutes de una operacioacuten aritmeacuteticaDF (direccioacuten) Designa la direccioacuten hacia la izquierda o hacia la derecha para mover o comparar cadenas de caracteresIF (interrupcioacuten) Indica que una interrupcioacuten externa como la entrada desde el teclado sea procesada o ignoradaTF (trampa) Permite la operacioacuten del procesador en modo de un paso Los programas depuradores como el DEBUG activan esta bandera de manera que usted pueda avanzar en la ejecucioacuten de una sola instruccioacuten a un tiempo para examinar el efecto de esa instruccioacuten sobre los registros de memoriaSF (signo) Contiene el signo resultante de una operacioacuten aritmeacutetica (0 = positivo y 1 = negativo)ZF (cero) Indica el resultado de una operacioacuten aritmeacutetica o de comparacioacuten (0 = resultado diferente de cero y 1 = resultado igual a cero)AF (acarreo auxiliar) Contiene un acarreo externo del bit 3 en un dato de 8 bits para aritmeacutetica especializadaPF (paridad) Indica paridad par o impar de una operacioacuten en datos de 8 bits de bajo orden (mas a la derecha)CF (acarreo) Contiene el acarreo de orden mas alto (mas a la izquierda) despueacutes de una operacioacuten aritmeacutetica tambieacuten lleva el contenido del ultimo bit en una operacioacuten de corrimiento o de rotacioacuten Las banderas estaacuten en el registro de banderas en las siguientes posiciones

Las banderas mas importantes para la programacioacuten en ensamblador son O S Z y C para operaciones de comparacioacuten y aritmeacuteticas y D para operaciones de cadenas de caracteres Los procesadores 80286 y posteriores tienen algunas banderas usadas para propoacutesitos internos en especial las que afectan al modo protegido Los procesadores 80286 y posteriores tienen un registro extendido de banderas conocido como Eflags

Registros de PILA La pila es un aacuterea de memoria importante y por ello tiene en vez de uno dos registros que se usan como desplazamiento (offset) para apuntar a su contenido Se usan como complemento al registro y son

-SP- Stack Pointer Se traduce como puntero de pila y es el que se reserva el procesador para uso propio en instrucciones de manipulado de pila Por lo general el programador no debe alterar su contenido-BP- Base pointer Se usa como registro auxiliar El programador puede usarlo para su provechoClaro que estos nombres y tipos de registros son estaacutendar ya que cada fabricante puede utilizar otros registro que reemplacen a estos o los auxilien aun asiacute los fabricantes que usan otros registro tienen la misma funcioacuten que los anteriormente mencionados

Ejemplo Registros de uso general del 80868088 Tienen 16 bits cada uno y son ocho

1 AX = Registro acumulador dividido en AH y AL (8 bits cada uno) Usaacutendolo se produce (en general) una instruccioacuten que ocupa un byte menos que si se utilizaran otros registros de uso general Su parte maacutes baja AL tambieacuten tiene esta propiedad El uacuteltimo registro mencionado es el equivalente al acumulador de los procesadores anteriores (8080 y 8085) Ademaacutes hay instrucciones como DAA DAS AAA AAS AAM AAD LAHF SAHF CBW IN y OUT que trabajan con AX o con uno de sus dos bytes (AH o AL) Tambieacuten se utiliza este registro (junto con DX a veces) en multiplicaciones y divisiones

2 BX = Registro base dividido en BH y BL Es el registro base de propoacutesito similar (se usa para direccionamiento indirecto) y es una versioacuten maacutes potente del par de registros HL de los procesadores anteriores

3 CX = Registro contador dividido en CH y CL Se utiliza como contador en bucles (instruccioacuten LOOP) en operaciones con cadenas (usando el prefijo REP) y en desplazamientos y rotaciones (usando el registro CL en los dos uacuteltimos casos)

4 DX = Registro de datos dividido en DH y DL Se utiliza junto con el registro AX en multiplicaciones y divisiones en la instruccioacuten CWD y en IN y OUT para direccionamiento indirecto de puertos (el registro DX indica el nuacutemero de puerto de entradasalida)

5 SP = Puntero de pila (no se puede subdividir) Aunque es un registro de uso general debe utilizarse soacutelo como puntero de pila la cual sirve para almacenar las direcciones de retorno de subrutinas y los datos temporarios (mediante las instrucciones PUSH y POP) Al introducir (push) un valor en la pila a este registro se le resta dos mientras que al extraer (pop) un valor de la pila este a registro se le suma dos

6 BP = Puntero base (no se puede subdividir) Generalmente se utiliza para realizar direccionamiento indirecto dentro de la pila

7 SI = Puntero iacutendice (no se puede subdividir) Sirve como puntero fuente para las operaciones con cadenas Tambieacuten sirve para realizar direccionamiento indirecto

8 DI = Puntero destino (no se puede subdividir) Sirve como puntero destino para las operaciones con cadenas Tambieacuten sirve para realizar direccionamiento indirecto

Cualquiera de estos registros puede utilizarse como fuente o destino en operaciones aritmeacuteticas y loacutegicas

Indicadores (flags) Hay nueve indicadores de un bit en este registro de 16 bits Los cuatro bits maacutes significativos estaacuten indefinidos mientras que hay tres bits con valores determinados los bits 5 y 3 siempre valen cero y el bit 1 siempre vale uno (esto tambieacuten ocurriacutea en los procesadores anteriores)

CF (Carry Flag bit 0) Si vale 1 indica que hubo arrastre (en caso de suma) hacia o preacutestamo (en caso de resta) desde el bit de orden maacutes significativo del resultado Este indicador es usado por instrucciones que suman o restan nuacutemeros que ocupan varios bytes Las instrucciones de rotacioacuten pueden aislar un bit de la memoria o de un registro ponieacutendolo en el CFPF (Parity Flag bit 2) Si vale uno el resultado tiene paridad par es decir un nuacutemero par de bits a 1 Este indicador se puede utilizar para detectar errores en transmisionesAF (Auxiliary carry Flag bit 4) Si vale 1 indica que hubo arrastre o preacutestamo del nibble (cuatro bits) menos significativo al nibble maacutes significativo Este indicador se usa con las instrucciones de ajuste decimalZF (Zero Flag bit 6) Si este indicador vale 1 el resultado de la operacioacuten es cero SF (Sign Flag bit 7) Refleja el bit maacutes significativo del resultado Como los nuacutemeros negativos se representan en la notacioacuten de complemento a dos este bit representa el signo 0 si es positivo 1 si es negativoTF (Trap Flag bit 8) Si vale 1 el procesador estaacute en modo paso a paso En este modo la CPU automaacuteticamente genera una interrupcioacuten interna despueacutes de cada instruccioacuten permitiendo inspeccionar los resultados del programa a medida que se ejecuta instruccioacuten por instruccioacutenIF (Interrupt Flag bit 9) Si vale 1 la CPU reconoce pedidos de interrupcioacuten externas enmascarables (por el pin INTR) Si vale 0 no se reconocen tales interrupciones Las interrupciones no enmascarables y las internas siempre se reconocen independientemente del valor de IF DF (Direction Flag bit 10) Si vale 1 las instrucciones con cadenas sufriraacuten auto-decremento esto es se procesaraacuten las cadenas desde las direcciones maacutes altas de memoria hacia las maacutes bajas Si vale 0 habraacute auto-incremento lo que quiere decir que las cadenas se procesaraacuten de izquierda a derechaOF (Overflow flag bit 11) Si vale 1 hubo un desborde en una operacioacuten aritmeacutetica con signo esto es un diacutegito significativo se perdioacute debido a que tamantildeo del resultado es mayor que el tamantildeo del destino

El procesador Z80 Registros de propoacutesito general El Z80 posee 14 registros de propoacutesito general de 8 bits denominados A B C D H L y A B C D H L Solamente un set de siete registros y el correspondiente registro de Flags F pueden estar activos al mismo tiempo Una instruccioacuten especial selecciona A y F o A y F mientras que otra instruccioacuten selecciona B C D E H L o C D E H LEl programador puede cambiar raacutepidamente de un conjunto de registros de propoacutesito general a otro Esto proporciona una mayor capacidad de almacenamiento en registros El acceso a datos presentes en registros de la CPU es mucho maacutes raacutepido que el acceso a datos en memoriaLos registros pueden agruparse de a pares formando registros de 16 bits Estos son los pares BC DE y HL (sus equivalentes primas tambieacuten pueden agruparse)

Flags

Aunque los Flags existen fiacutesicamente dentro de la CPU estaacuten agrupados loacutegicamente formando un registro Los Flags del Z80 son los siguientes

Flag de Cero(Z) Toma el valor 1 si el resultado de una operacioacuten es cero Es el bit seis Flag de signo(S) Toma el valor 1 si el resultado de una operacioacuten es negativo Es el bit siete Flag de Carry(C) Este flag es afectado por las instrucciones de desplazamiento y es puesto en 1 oacute 0 seguacuten el valor del bit desplazado Tambieacuten es afectado por las operaciones aritmeacuteticas Este flag es el bit ceroFlag de Paridad y overflow(PV) En el caso de paridad se pone en 1 si el resultado de una operacioacuten posee un nuacutemero par de unos Cuando el flag PV se usa para representar overflow el flag se pone en 1 si ocurre un overflow despueacutes de una operacioacuten aritmeacutetica Este flag es el bit 2Flag H y N Son dos Flip Flop que no pueden ser examinados por las instrucciones de salto condicional El Z80 los usa para las operaciones BCD H representa el rebalse que genera considerando los cuatro bits menos significativos del resultado y N es el flag de resta el cual se activa para indicar si la uacuteltima instruccioacuten ejecutada fue suma o resta En el caso general una instruccioacuten de resta coloca en 1 el flag N y una instruccioacuten de suma lo coloca en 0 Los Flags H y N son los bits 4 y 1 respectivamente

Registros de propoacutesito especial Program Counter Es un registro de 16 bits que indica la direccioacuten de la proacutexima instruccioacuten ejecutar Las instrucciones del Z80 pueden contar de uno dos tres o cuatro bytes

Stack-Pointer Es un registro de 16 bits que indica la direccioacuten de una memoria RAM externa denominada Stack El objetivo de esta aacuterea de memoria es proporcionar un medio de almacenamiento temporal de los registros del usuario registro de Flags y del program Counter La provisioacuten de Stack es fundamental para operaciones tales como los llamados a sub-rutinas e interrupcionesRegistros iacutendices IX e IY Estos registros son de 16 bits disentildeados para permitir un direccionamiento indexado en los programas del Z80 Cuando se ejecuta una instruccioacuten en un modo de direccionamiento indexado se usa uno de los dos registros iacutendices para calcular la direccioacuten del operandoRegistro de interrupciones I Es un registro de 8 bits que puede ser cargado para especificar el byte maacutes significativo de una direccioacuten de memoria El byte menos significativo es proporcionado por el dispositivo que solicita la interrupcioacutenRegistro de refresh de memoria R Es un registro especial disentildeado para proporcionar un refresh automaacutetico de las memorias RAM dinaacutemicas Registro de instrucciones El registro de instrucciones tiene por misioacuten almacenar el coacutedigo de operacioacuten de la instruccioacuten leiacuteda desde memoria Este coacutedigo es descodificado y con esta informacioacuten se dirigen todos los micro-pasos httpwwwoocitiesorgmxantrahxgdocumentosorg_compregistrohtml

Registros del procesadorDentro del procesador hay un conjunto de registros que ofrecen un nivel de memoria que es maacutes raacutepido y pequentildeo que la memoria principal Los registros del procesador sirven para dos funciones Registros visibles de usuario Un programador de lenguaje de maacutequina o ensamblador puede minimizar las referencias a memoria principal mediante un uso oacuteptimo de estos registros Con lenguajes de alto nivel un compilador que optimice coacutedigo intentaraacute hacer una seleccioacuten inteligente de queacute variables asignar a registros y cuaacuteles a ubicaciones de la memoria principal Algunos lenguajes de alto nivel como C permiten que el programador indique al compilador queacute variables se deben almacenar en registros Registros de control y de estado Son utilizados por el procesador para el control de las operaciones o por rutinas privilegiadas del sistema operativo para controlar la ejecucioacuten de los programas No hay una separacioacuten clara de los registros en estas dos categoriacuteas Por ejemplo en algunas maacutequinas el contador de programa es visible para los usuarios pero en otras muchas no lo es Sin embargo para el propoacutesito de la discusioacuten que viene a continuacioacuten es conveniente emplear estas categoriacuteas Registros visibles de usuario Un registro visible de usuario es aqueacutel que puede ser referenciado por medio del lenguaje de maacutequina que ejecuta el procesador y es por lo general accesible para todos los programas incluyendo tanto los programas de aplicacioacuten como los del

sistema Las clases de registro que normalmente estaacuten disponibles son los registros de datos los registros de direccioacuten y los registros de coacutedigos de condicioacuten

Los registros de datosPueden ser asignados por el programador a diversas funciones En algunos casos son de propoacutesito general y pueden ser empleados por cualquier instruccioacuten de maacutequina que lleve a cabo operaciones sobre los datos Sin embargo suelen ponerse ciertas restricciones a menudo Por ejemplo puede haber registros dedicados a operaciones en coma flotante

Los registros de direccioacutenContienen direcciones en la memoria principal de datos e instrucciones o una parte de la direccioacuten que se utiliza en el caacutelculo de la direccioacuten completa Estos registros pueden ser de propoacutesito general o pueden estar dedicados a un modo especiacutefico de direccionamiento Entre los ejemplos se incluyen

Registro iacutendice El direccionamiento indexado es un modo comuacuten de direccionamiento que implica sumar un iacutendice a un valor base para obtener la direccioacuten efectiva

Puntero de segmento Con direccionamiento segmentado la memoria se divide en segmentos que son bloques de palabras de tamantildeo variable Una referencia a memoria consta de una referencia a un segmento particular y un desplazamiento dentro del segmento En este modo se utiliza un registro que alberga una direccioacuten base (ubicacioacuten inicial) de un segmento Puede haber varios registros de este tipo por ejemplo uno para el sistema operativo (es decir cuando se ejecuta coacutedigo del sistema operativo en el procesador) y otro para la aplicacioacuten que estaacute en ejecucioacuten

Puntero de pila Si hay un direccionamiento de pila visible para los usuarios la pila estaraacute por lo general en la memoria principal existiendo un registro dedicado a sentildealar la cima de la pila

Esto permite el uso de instrucciones que no contienen ninguacuten campo de direccioacuten tales como push (poner) y pop (sacar) Una uacuteltima categoriacutea de registros que son al menos parcialmente visibles para los usuarios son aquellos que contienen coacutedigos de condicioacuten (tambieacuten denominados indicadores o flags) Los coacutedigos de condicioacuten son bits activados por el hardware del procesador como resultado de determinadas operaciones

Por ejemplo una operacioacuten aritmeacutetica puede producir un resultado positivo negativo cero o desbordamiento Ademaacutes de almacenar el resultado de esta operacioacuten en un registro o en memoria tambieacuten se activaraacute un coacutedigo de condicioacuten Este coacutedigo puede consultarse posteriormente como parte de una operacioacuten de salto condicional

Los bits de coacutedigo de condicioacuten se agrupan en uno o maacutes registros Estos forman generalmente parte de un registro de control En general las instrucciones de maacutequina permiten leer estos bits mediante referencias impliacutecitas pero no pueden ser alterados por el programador

En algunas maacutequinas una llamada a un procedimiento o subrutina provocaraacute que los registros visibles de usuario se salven automaacuteticamente para luego restaurarlos al retomar Este proceso de salvar y restaurar lo lleva a cabo el procesador como parte de la ejecucioacuten de las instrucciones de llamada y retomo Esto permite que cada procedimiento pueda usar los registros de forma independiente En otras maacutequinas es responsabilidad del programador salvar los contenidos de los registros de usuario visibles que sean relevantes antes de hacer la llamada a un procedimiento incluyendo instrucciones en el programa con tal propoacutesito Asiacute pues las instrucciones de salvar y restaurar pueden ser llevadas a cabo por el hardware o por el software dependiendo de la maacutequina

Registros de control y de estado Varios registros se emplean para controlar las operaciones del procesador En la mayoriacutea de las maacutequinas la mayor parte de estos registros no son visibles para los usuarios Algunos de ellos pueden estar accesibles a las instrucciones de maacutequina ejecutadas en un modo de control o modo del sistemaPor supuesto maacutequinas diferentes tendraacuten organizaciones diferentes de registros y podraacuten usar terminologiacuteas distintas

Ademaacutes de los registros MAR MBR IOAR y IOBR mencionados anteriormente los siguientes registros son esenciales en la ejecucioacuten de instrucciones Contador de programa (PC Program Counter) Contiene la direccioacuten de la instruccioacuten a ser leiacuteda Registro de instruccioacuten (IR Instruction Regiacutester) Contiene la uacuteltima instruccioacuten leiacuteda Todos los disentildeos de procesadores

incluyen ademaacutes un registro o conjunto de registros conocidos a menudo como palabra de estado del programa (PSW Program Status Word) que contiene informacioacuten de estado Normalmente la PSW contiene coacutedigos de condicioacuten junto a otra informacioacuten de estado Entre los campos e indicadores maacutes comunes se incluyen los siguientes

Signo Contiene el bit del signo de la uacuteltima operacioacuten aritmeacutetica efectuada Cero Se activa cuando el resultado de una operacioacuten aritmeacutetica es cero

Acarreo Se activa cuando como resultado de una suma o una resta se produce un acarreo maacutes allaacute del bit maacutes significativo Se utiliza en operaciones aritmeacuteticas de maacutes de una palabra

Igualdad Se activa si una comparacioacuten loacutegica da como resultado la igualdad Desbordamiento Empleado para sentildealar un desbordamiento aritmeacutetico Habilitarinhahilitar interrupcioacutenes Empleado para habilitar o inhabilitar interrupciones Cuando Las interrupciones estaacuten

inhabilitadas el procesador las ignora Esto es muy deseable cuando el sistema operativo estaacute ocupado en el tratamiento de otra interrupcioacuten

Supervisor Indica si el procesador estaacute ejecutando en modo supervisor o en modo usuario Ciertas instrucciones privilegiadas soacutelo se pueden ejecutar en modo supervisor y soacutelo se puede tener acceso a ciertas aacutereas de memoria en modo supervisor

En el disentildeo de un procesador especiacutefico se pueden encontrar una serie de registros relacionados con el estado y el control Ademaacutes de la PSW puede haber un puntero a un bloque de memoria que contenga informacioacuten de estado adicional En maacutequinas que utilizan varios tipos de interrupcioacuten se puede ofrecer una serie de registros con punteros a cada rutina de tratamiento de interrupcioacuten Si se utiliza una pila para implementar ciertas funciones (por ejemplo las llamadas a procedimientos) entonces se necesita un puntero a la pila Por uacuteltimo los registros tambieacuten pueden utilizarse para el control de las operaciones de ES Una serie de factores inciden en el disentildeo de la organizacioacuten de los registros de control y estado Un punto clave es el soporte del sistema operativo Cierto tipo de informacioacuten de control es de utilidad especiacutefica para el sistema operativo Si el disentildeador del procesador dispone de una visioacuten funcional del sistema operativo la organizacioacuten de los registros puede adaptarse convenientementeOtra decisioacuten clave del disentildeo es la asignacioacuten de informacioacuten de control a los registros y la memoria Es habitual dedicar los primeros centenares o miles de palabras (las maacutes bajas) de memoria para el control El disentildeador debe decidir la cantidad de informacioacuten de control que debe residir en los raacutepidos y costosos registros junto a la cantidad que debe permanecer en memoria principal que es maacutes lenta y barata

httpslamiradelsniperwordpresscom20120820registros-del-procesador

1 Los registros

El procesador necesita para su funcionamiento de ciertas aacutereas de almacenamiento que aquiacute se llaman registros y que son de dimensiones miacutenimas [3] sin embargo tienen la ventaja de su rapidez Comparados con los accesos a RAM los de registro son como miacutenimo 10 veces maacutes veloces

El 8088 dispone de catorce registros de 16 bits que se agrupan en cuatro grupos y que reciben nombres especiales (precisamente los que se utilizan para designarlos en lenguaje ensamblador)

sect311 Registros de uso general

Existen 4 registros denominados AX BX CX y DX que en realidad tienen asignados usos caracteriacutesticos aunque pueden ser utilizados a discrecioacuten para cualquier cosa que necesitemos

AX es denominado acumulador suele contener uno de los operandos que intervienen en las operaciones aritmeacuteticas y loacutegicas y despueacutes de esta el resultado de la operacioacuten En general

las instrucciones que trabajan con este registro (o su mitad inferior) tienen un microcoacutedigo maacutes simple que la misma instruccioacuten ejecutada con otro registro

BX es el registro base suele contener la direccioacuten de inicio de una tabla de valores

CX es denominado contador Las instrucciones de bucle (LOOP) utilizan este registro como contador

DX es un registro de datos multiuso Se utiliza en operaciones de multiplicacioacuten y divisioacuten junto con AX En operaciones de entradasalida de puertos INOUT su mitad inferior DL contiene el

nuacutemero de puerto ( 25)

Aunque estos cuatro registros son de 16 bits (como los 10 restantes) [6] en caso necesario pueden ser utilizados en dos mitades (nibbles) High y Low de 8 bits con lo que puede considerarse que existen 12 registros de uso general (no simultaacuteneos) los anteriores y sus mitades AH AL BH BL CH CL DH y DL

sect312 Registros de segmento

Se dispone de cuatro registros que sirven para contener las direcciones de otros tantos segmentos (zonas de 64 KB de memoria) Utilizaacutendolos en conjuncioacuten con otros registros que sentildealan las

direcciones concretas dentro de estos segmentos (los desplazamientos ) permiten manejar la totalidad de la memoria direccionable (el bus de direcciones es de 20 bits) Ver al respecto el epiacutegrafe

Direccionamiento segmentado ( 51)

Segmento de coacutedigo CS (Code segment) Sentildeala la direccioacuten del segmento de coacutedigo del

programa que se estaacute ejecutando ( E132) Segmento de datos DS (Data segment) Sentildeala la direccioacuten del segmento de datos del

programa en ejecucioacuten ( E132) Segmento de pila SS (Stack segment) Sentildeala la direccioacuten del segmento donde estaacute la pila

del programa ( E132) Segmento extra ES (Extra segment) Es un segmento auxiliar a los anteriores se utiliza para

sentildealar espacio extra en alguno de los segmentos o para almacenar momentaacuteneamente direcciones intermedias

Nota Puede ocurrir que programas pequentildeos utilicen el mismo segmento para el coacutedigo los datos y la pila

sect313 Registros de puntero

Son 5 registros destinados a contener direcciones estas direcciones son desplazamientos dentro de los

segmentos indicados por los registros de segmento (ver figura 51 Fig2)

El primero denominado indistintamente puntero de instruccioacuten IP (Instruccioacuten pointer) y contador de programa PC(Program counter) indica el desplazamiento (dentro del segmento de coacutedigo CS) de la proacutexima instruccioacuten a ejecutar

El puntero de pila SP (Stack Pointer) sentildeala el desplazamiento del final de la pila dentro del segmento de pila SS En caso necesario la pila puede crecer a partir de este punto de forma que por ejemplo una nueva invocacioacuten de funcioacuten crearaacute un nuevo registro de activacioacuten que comenzaraacute en este punto

El puntero base BP (Base pointer) sentildeala el desplazamiento (dentro del segmento de pila SS) donde se encuentra el origen de la zona ocupada por las variables dinaacutemicas

Existen dos registros denominados de iacutendice en razoacuten de su utilizacioacuten muy particular el iacutendice fuente SI (Source index) y el iacutendice destino DI (Destination index) Generalmente estos dos registros se utilizan con alguno de los registros de uso general y con ciertas

instrucciones especiacuteficamente pensadas para transferir datos (dentro de un rango de posiciones de memoria) desde un punto inicial de un segmento de datos a otro

Ver en la paacutegina adjunta un ejemplo relativo al uso de punteros ( 32 Ejemplo-2)

sect314 Registro de estado

Existe un registro especial el registro de estado (FLAGS) en el que 9 de los 18 bits actuacutean como semaacuteforos (indicadores del estado del procesador y del resultado de determinadas operaciones) Por ejemplo si despueacutes de una suma aritmeacutetica hay o no desbordamiento del bit maacutes significativo

Los nombres y situacioacuten de cada uno dentro de la palabra de 16 bits se muestran en la figura 2

Cada bits individual puede estar activo (1) o inactivo (0) y tiene un identificador que termina en F(Flag) Son los siguientes

Bit Indicador de Uso

CF Acarreo (Carry Flag)

Indicador de arrastre del bit de mayor orden que puede ocurrir en las operaciones aritmeacuteticas suma y resta

PF Paridad (Parity Flag)

Si estaacute activo Indica un nuacutemero par de bits activos (bits cuyo contenido es 1) Esta informacioacuten es uacutetil cuando el procesador controla transmisiones de datos

AF Acarreo auxiliar Indicador de ajuste en operaciones aritmeacuteticas con cantidades

BCD ( E01w1)

ZF Cero (Zero Flag) Estaacute activo si el resultado de operacioacuten es cero o resultado de comparacioacuten igual

SF Signo (Sign Flag) Si estaacute activo indica que el resultado de operacioacuten o de comparacioacuten son negativos [5]

TF Detencioacuten (Trap Flag)

Si estaacute activo el procesador genera automaacuteticamente una interrupcioacuten despueacutes de la ejecucioacuten de cada instruccioacuten lo que permite controlar paso a paso la ejecucioacuten del programa Este bit debe estar normalmente inactivo (a 0)

IF Interrupcioacuten (Interrupt Flag)

Este bit controla el estado del sistema de interrupciones

enmascarables ( 24) Cuando estaacute activo (1) permite las

interrupciones el estado inactivo (0) las deshabilita

DF Direccioacuten (Direction Flag)

Indica la direccioacuten de las operaciones

OF Desbordamiento (Overflow Flag)

Sentildeala desbordamiento aritmeacutetico

Nota Los usuarios de MS-DOS o Windows puede usar el programa DEBUG ( 171) para inspeccionar y modificar el contenido de los registros de la siguiente forma

Invocar DEBUG desde una ventana DOS (suponemos que estamos en Windows el prompt es un guioacuten -)

introducir el comando R (pedimos que nos muestre el contenido de los registros)

Salir de Debug con Q

En mi PC la respuesta al comando tiene el siguiente aspecto

AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=1779 ES=1779 SS=1779 CS=1779 IP=0100 NV UP EI PL NZ NA PO NC

Los valores estaacuten expresados en hexadecimal La uacuteltima secuencia de caracteres (NV UP EI PL NZ NA PO NC) muestra el contenido del registro de estado (el bit TF de detencioacuten no se muestra) el significado de la notacioacuten utilizada es el siguiente

Bit Indicador de Indicativo si bit 1 Indicativo si bit 0

CF Acarreo CY (Carry yes) NC (No Carry)

PF Paridad PE (Parity Even) paridad par PO (Parity Odd) paridad impar

AF Acarreo auxiliar AC (Auxiliar Carry) NA (No Auxiliar)

ZF Cero ZR (Zero) NZ (No Zero)

SF Signo NG (Negative) negativo PL (Plus) positivo

IF Interrupcioacuten EI (Enabled Interrupt) activa DI (Disabled Interrupt) desactivada

DF Direccioacuten DN (Down) decremento UP incremento

OF Desbordamiento OV (Overflow) NV (No overflow)

Tambieacuten es posible inspeccionar el contenido de un solo registro antildeadiendo al comando R el nombre del registro Por ejemplo el comando R IP muestra el contenido del contador de programa Los nombres que pueden utilizarse para los registros son los siguientes AX BX CX DX SP BP SI DI DS ES SS CS IP y F (este uacuteltimo para el registro de estado)

Despueacutes de un comando de este tipo DEBUG responde con un prompt distinto del habitual para indicar que debe introducir el nuevo valor que desea para el registro Pulsando INTRO se vuelve al modo normal

sect315 Comentario

Observe que tanto el registro contador de programa IP como el de base BP siempre contienen direcciones de memoria (los otros pueden contener direcciones o datos) Ni los registros de segmento ni los de puntero se pueden dividir en mitades (como los de uso general)

httpwwwzatorcomHardwareH3_2htm

Definiciones de registros Definicioacuten 1 un registro es una memoria de alta velocidad y poca capacidad integrada en el microprocesador que permite guardar transitoriamente y acceder a valores muy usados generalmente en operaciones matemaacuteticas Definicioacuten 2 un registro es una porcioacuten de memoria ultrarraacutepida de poca capacidad e integrado al microprocesador que permite almacenar y acceder datos usados frecuentemente Se emplean para aumentar la velocidad de ejecucioacuten de los programas

3 Funcioacuten de los registros Los registros estaacuten en la cumbre de la jerarquiacutea de memoria y son la manera maacutes raacutepida que tiene el sistema de almacenar datos Los registros se miden generalmente por el nuacutemero de bits que almacenan por ejemplo un registro de 8 bits o un registro de 32 bitsldquo La CPU contiene un conjunto de localidades de almacenamiento temporal de datos de alta velocidad llamada registro Algunos de los registros estaacuten dedicados al control y solo la unidad de control tiene acceso a ellos Los registros restantes son los registros de uso general y el programador es el usuario que tiene acceso a ellos

4 Los nombres de los registros describen la forma como algunas instrucciones enensamblador las emplean

5 Algunos registros basicos Dentro del conjunto baacutesico de registros de control se deben incluir a los siguientesa middot Contador de programa (PC)b middot Registro de direcciones de la memoria (MAR)c middot Registro de datos (RD)d middot Registro de instrucciones (IR)e middot Palabra de estado de programa (PSW)

6 Funcioacuten del PC La funcioacuten del PC consiste en seguir la pista de la instruccioacuten por buscar (capturar) en el siguiente ciclo de maquina por lo tanto contiene la direccioacuten de la siguiente instruccioacuten por ejecutar El PC es modificado dentro del ciclo de buacutesqueda de la instruccioacuten actual mediante la suma de una constante El numero que se agrega al PC es la longitud de una instruccioacuten en palabras Por lo tanto si una instruccioacuten tiene una palabra de longitud se agrega 1 al PC si una instruccioacuten tiene dos palabras de largo se agrega 2 y asiacute sucesivamente

7 Funcioacuten de MAR Registro de direcciones de la memoria (MAR) funciona como registro de enlace entre la CPU y el canal de direcciones Cuando se logra el acceso a la memoria la direccioacuten es colocada en el MAR por la unidad de control y ahiacute permanece hasta que se completa la transaccioacuten El numero de bit que hay en el MAR es igual al del canal de direcciones La diferencia que existe entre el PC y el MAR es que durante el ciclo de ejecucioacuten de una instruccioacuten el PC y el MAR sirven al mismo fin Sin embargo muchas de las instrucciones de la maquina hacen referencia a la memoria y operan con los datos que

estaacuten en ella Como la direccioacuten de los datos suele ser diferente de la instruccioacuten siguiente se necesita el MAR

8 Funcioacuten de RD Registro de datos la funcioacuten del RD consiste en proporcionar un aacuterea de almacenamiento temporal (memoria intermedia acumulada o buffer) de datos que se intercambian entre la PCU y la memoria Los datos pueden ser instrucciones (obtenidos en el ciclo de ejecucioacuten) o datos del operando (obtenidos en el ciclo de ejecucioacuten) Debido a su conexioacuten directa con el canal de datos el RD contiene el mismo numero de bit que dicho canal

9 Funcioacuten de IR Registro de instrucciones (IR) es un registro que conserva el coacutedigo de operacioacuten de la instruccioacuten en todo el ciclo de la maquina El coacutedigo es empleado por la unidad de control de la CPU para generar las sentildeales apropiadas que controla le ejecucioacuten de la instruccioacuten La longitud del ER es la longitud en bit del coacutedigo de operacioacuten

10 Funcioacuten de PSW Palabra de estado de programa (PSW) la palabra de estado o condicioacuten de programa almacena informacioacuten pertinente sobre el programa que este ejecutaacutendose Por ejemplo al completarse una funcioacuten de la unidad aritmeacutetica loacutegica se modifica un conjunto de bit llamados coacutedigos (o sentildeales de condicioacuten) Estos bit especifican si el resultado de una operacioacuten aritmeacutetica fue 0 o negativo o si el resultado se desbordoacute Ademaacutes el PSW contiene bit que hacen posible que la computadora responda a solicitudes de servicio asincroacutenicas generadas por dispositivos de Entrada-Salida o condiciones de error interno Estas sentildeales se denominan interrupciones

  • 1 Los registros
  • sect311 Registros de uso general
  • sect312 Registros de segmento
  • sect313 Registros de puntero
  • sect314 Registro de estado
  • sect315 Comentario
Page 4: Registros de procesador.docx

OPENMSG DB acute Open error acute 0DH 0AHPATHNAM DB acuteDNAMEFILESRTacute 0READMSD DB acute Read error acute 0DH 0AHROW DB 00---------------------------------------------------------------------------------------------CODEBEGIN PROC FARMOV AXdata inicializaMOV DSAX registro deMOV ESAX segmentoMOV AX0600H Autor

Oscar borja

Leer maacutes httpwwwmonografiascomtrabajos7regiregishtmlixzz3YhKCX7bC

Registros de un microprocesadorEn arquitectura de ordenadores un registro es una memoria de alta velocidad y poca capacidad integrada en el microprocesador que permite guardar transitoriamente y acceder a valores muy usados generalmente en operaciones matemaacuteticasLos registros estaacuten en la cumbre de la jerarquiacutea de memoria y son la manera maacutes raacutepida que tiene el sistema de almacenar datos Los registros se miden generalmente por el nuacutemero de bits que almacenan por ejemplo un registro de 8 bits o un registro de 32 bits Los registros generalmente se implementan en un banco de registros pero antiguamente se usaban biestables individuales memoria SRAMo formas aun maacutes primitivasEl teacutermino es usado generalmente para referirse al grupo de registros que pueden ser directamente indexados como operandos de una instruccioacuten como estaacute definido en el conjunto de instrucciones Sin embargo los microprocesadores tienen ademaacutes muchos otros registros que son usados con un propoacutesito especiacutefico como el contador de programa Por ejemplo en la arquitectura IA32 el conjunto de instrucciones define 8 registros de 32 bits

Tipos de registro

Los registros de datos son usados para guardar nuacutemeros enteros En algunas computadoras antiguas existiacutea un uacutenico registro donde se guardaba toda la informacioacuten llamado acumulador

Los registros de memoria son usados para guardar exclusivamente direcciones de memoria Eran muy usados en la arquitectura Harvard ya que muchas veces las direcciones teniacutean un tamantildeo de palabra distinto que los datos

Los registros de propoacutesito general (en ingleacutes GPRs o General Purpose Registers) pueden guardar tanto datos como direcciones Son fundamentales en la arquitectura de von Neumann La mayor parte de las computadoras modernas usa GPR

Los registros de coma flotante son usados para guardar datos en formato de coma flotante Los registros constantes tienen valores creados por hardware de soacutelo lectura Por ejemplo en MIPS el registro cero

siempre vale 0 Los registros de propoacutesito especiacutefico guardan informacioacuten especiacutefica del estado del sistema como el puntero de pila o

el registro de estado

REGISTROS DEL PROCESADORLos registros del procesador se emplean para controlar instrucciones en ejecucioacuten manejar direccionamiento de memoria y proporcionar capacidad aritmeacutetica Los registros son direccionables por medio de un nombre Los bits por convencioacuten se numeran de derecha a izquierda como en 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0Los registros internos del procesador se puede clasificar en 6 tipos diferentes Registros de segmento

1 Registros de propoacutesito general2 Registros de apuntadores

3 Registros de banderas4 Registros de Puntero de instruccioacuten5 Registros de Pila

Registros de segmento Un registro de segmento tiene 16 bits de longitud y facilita un aacuterea de memoria para direccionamiento conocida como el segmento actualRegistro CS El DOS almacena la direccioacuten inicial del segmento de coacutedigo de un programa en el registro CS Esta direccioacuten de segmento mas un valor de desplazamiento en el registro apuntador de instruccioacuten (IP) indica la direccioacuten de una instruccioacuten que es buscada para su ejecucioacutenRegistro DS La direccioacuten inicial de un segmento de datos de programa es almacenada en el registro DS En teacuterminos sencillos esta direccioacuten mas un valor de desplazamiento en una instruccioacuten genera una referencia a la localidad de un byte especifico en el segmento de datosRegistro SS El registro SS permite la colocacioacuten en memoria de una pila para almacenamiento temporal de direcciones y datos El DOS almacena la direccioacuten de inicio del segmento de pila de un programa en le registro SS Esta direccioacuten de segmento mas un valor de desplazamiento en el registro del apuntador de pila (SP) indica la palabra actual en la pila que esta siendo direccionadaRegistros ES Alguna operaciones con cadenas de caracteres (datos de caracteres) utilizan el registro extra de segmento para manejar el direccionamiento de memoria En este contexto el registro ES esta asociado con el registro DI (iacutendice) Un programa que requiere el uso del registro ES puede inicializarlo con una direccioacuten de segmento apropiadaRegistros FS y GS Son registros extra de segmento en los procesadores 80386 y posteriores

Registros de propoacutesito general Los registros de propoacutesito general AX BX CX y DX son los caballos de batalla del sistema Son uacutenicos 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 su nombreRegistro AX El registro AX el acumulador principal es utilizado para operaciones que implican entradasalida y la mayor parte de la aritmeacutetica Por ejemplo las instrucciones para multiplicar dividir y traducir suponen el uso del AX Tambieacuten algunas operaciones generan coacutedigo mas eficiente si se refieren al AX en lugar de a los otros registrosRegistro BX El BX es conocido como el registro base ya que es el uacutenico registro de propoacutesito general que puede ser iacutendice para direccionamiento indexado Tambieacuten es comuacuten emplear el BX para caacutelculosRegistro DX El DX es conocido como l registro de datos Alguna operaciones de entradasalida requieren uso y las operaciones de multiplicacioacuten y divisioacuten con cifras grandes suponen al DX y al AX trabajando juntos

Registro de Apuntador de Instrucciones El registro apuntador de instrucciones (IP) de 16 bits contiene el desplazamiento de direccioacuten de la siguiente instruccioacuten que se ejecuta El IP esta asociado con el registro CS en el sentido de que el IP indica la instruccioacuten actual dentro del segmento de coacutedigo que se esta ejecutando actualmente Los procesadores 80386 y posteriores tienen un IP ampliado de 32 bits llamado EIPEn el ejemplo siguiente el registro CS contiene 25A4[0]H y el IP contiene 412H Para encontrar la siguiente instruccioacuten que seraacute ejecutada el procesador combina las direcciones en el CS y el IPSegmento de direccioacuten en el registro CS 25A40H Desplazamiento de direccioacuten en el registro IP + 412H Direccioacuten de la siguiente instruccioacuten 25E52H

Registros Apuntadores Los registros SP (apuntador de la pila) Y BP (apuntador de base) estaacuten asociados con el registro SS y permiten al sistema accesar datos en el segmento de la pila

Registro SP El apuntador de la pila 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 Los procesadores 80386 y posteriores tienen un apuntador de pila de 32 bits el registro ESP El sistema maneja de forma automaacutetica estos registrosEn el ejemplo siguiente el registro SS contiene la direccioacuten de segmento 27B3[0]H y el SP el desplazamiento 312H Para encontrar la palabra actual que esta siendo procesada en la pila la computadora combina las direcciones en el SS y el SPRegistro BP El BP de 16 bits facilita la referencia de paraacutemetros los cuales son datos y direcciones transmitidos viacutea pila Los procesadores 80386 y posteriores tienen un BP ampliado de 32 bits llamado el registro EBP

Registros Indice Los registros SI y DI estaacuten disponibles para direccionamiento indexado y para sumas y restas

Registro SI El registro iacutendice fuente de 16 bits es requerido por algunas operaciones con cadenas (de caracteres) En este contexto el SI esta asociado con el registro DS Los procesadores 80386 y posteriores permiten el uso de un registro ampliado de 32 bits el ESIRegistro DI El registro iacutendice destino tambieacuten es requerido por algunas operaciones con cadenas de caracteres En este contexto el DI esta asociado con el registro ES Los procesadores 80386 y posteriores permiten el uso de un registro ampliado de 32 bits el EDI

Registro de Banderas De los 16 bits del registro de banderas nueve son comunes a toda la familia de procesadores 8086 y sirven para indicar el estado actual de la maquina y el resultado del procesamiento Muchas instrucciones que piden comparaciones y aritmeacutetica cambian el estado de las banderas algunas cuyas instrucciones pueden realizar pruebas para determinar la accioacuten subsecuente En resumen los bits de las banderas comunes son como sigue

OF (Overflow desbordamiento) Indica desbordamiento de un bitde orden alto (mas a la izquierda) despueacutes de una operacioacuten aritmeacuteticaDF (direccioacuten) Designa la direccioacuten hacia la izquierda o hacia la derecha para mover o comparar cadenas de caracteresIF (interrupcioacuten) Indica que una interrupcioacuten externa como la entrada desde el teclado sea procesada o ignoradaTF (trampa) Permite la operacioacuten del procesador en modo de un paso Los programas depuradores como el DEBUG activan esta bandera de manera que usted pueda avanzar en la ejecucioacuten de una sola instruccioacuten a un tiempo para examinar el efecto de esa instruccioacuten sobre los registros de memoriaSF (signo) Contiene el signo resultante de una operacioacuten aritmeacutetica (0 = positivo y 1 = negativo)ZF (cero) Indica el resultado de una operacioacuten aritmeacutetica o de comparacioacuten (0 = resultado diferente de cero y 1 = resultado igual a cero)AF (acarreo auxiliar) Contiene un acarreo externo del bit 3 en un dato de 8 bits para aritmeacutetica especializadaPF (paridad) Indica paridad par o impar de una operacioacuten en datos de 8 bits de bajo orden (mas a la derecha)CF (acarreo) Contiene el acarreo de orden mas alto (mas a la izquierda) despueacutes de una operacioacuten aritmeacutetica tambieacuten lleva el contenido del ultimo bit en una operacioacuten de corrimiento o de rotacioacuten Las banderas estaacuten en el registro de banderas en las siguientes posiciones

Las banderas mas importantes para la programacioacuten en ensamblador son O S Z y C para operaciones de comparacioacuten y aritmeacuteticas y D para operaciones de cadenas de caracteres Los procesadores 80286 y posteriores tienen algunas banderas usadas para propoacutesitos internos en especial las que afectan al modo protegido Los procesadores 80286 y posteriores tienen un registro extendido de banderas conocido como Eflags

Registros de PILA La pila es un aacuterea de memoria importante y por ello tiene en vez de uno dos registros que se usan como desplazamiento (offset) para apuntar a su contenido Se usan como complemento al registro y son

-SP- Stack Pointer Se traduce como puntero de pila y es el que se reserva el procesador para uso propio en instrucciones de manipulado de pila Por lo general el programador no debe alterar su contenido-BP- Base pointer Se usa como registro auxiliar El programador puede usarlo para su provechoClaro que estos nombres y tipos de registros son estaacutendar ya que cada fabricante puede utilizar otros registro que reemplacen a estos o los auxilien aun asiacute los fabricantes que usan otros registro tienen la misma funcioacuten que los anteriormente mencionados

Ejemplo Registros de uso general del 80868088 Tienen 16 bits cada uno y son ocho

1 AX = Registro acumulador dividido en AH y AL (8 bits cada uno) Usaacutendolo se produce (en general) una instruccioacuten que ocupa un byte menos que si se utilizaran otros registros de uso general Su parte maacutes baja AL tambieacuten tiene esta propiedad El uacuteltimo registro mencionado es el equivalente al acumulador de los procesadores anteriores (8080 y 8085) Ademaacutes hay instrucciones como DAA DAS AAA AAS AAM AAD LAHF SAHF CBW IN y OUT que trabajan con AX o con uno de sus dos bytes (AH o AL) Tambieacuten se utiliza este registro (junto con DX a veces) en multiplicaciones y divisiones

2 BX = Registro base dividido en BH y BL Es el registro base de propoacutesito similar (se usa para direccionamiento indirecto) y es una versioacuten maacutes potente del par de registros HL de los procesadores anteriores

3 CX = Registro contador dividido en CH y CL Se utiliza como contador en bucles (instruccioacuten LOOP) en operaciones con cadenas (usando el prefijo REP) y en desplazamientos y rotaciones (usando el registro CL en los dos uacuteltimos casos)

4 DX = Registro de datos dividido en DH y DL Se utiliza junto con el registro AX en multiplicaciones y divisiones en la instruccioacuten CWD y en IN y OUT para direccionamiento indirecto de puertos (el registro DX indica el nuacutemero de puerto de entradasalida)

5 SP = Puntero de pila (no se puede subdividir) Aunque es un registro de uso general debe utilizarse soacutelo como puntero de pila la cual sirve para almacenar las direcciones de retorno de subrutinas y los datos temporarios (mediante las instrucciones PUSH y POP) Al introducir (push) un valor en la pila a este registro se le resta dos mientras que al extraer (pop) un valor de la pila este a registro se le suma dos

6 BP = Puntero base (no se puede subdividir) Generalmente se utiliza para realizar direccionamiento indirecto dentro de la pila

7 SI = Puntero iacutendice (no se puede subdividir) Sirve como puntero fuente para las operaciones con cadenas Tambieacuten sirve para realizar direccionamiento indirecto

8 DI = Puntero destino (no se puede subdividir) Sirve como puntero destino para las operaciones con cadenas Tambieacuten sirve para realizar direccionamiento indirecto

Cualquiera de estos registros puede utilizarse como fuente o destino en operaciones aritmeacuteticas y loacutegicas

Indicadores (flags) Hay nueve indicadores de un bit en este registro de 16 bits Los cuatro bits maacutes significativos estaacuten indefinidos mientras que hay tres bits con valores determinados los bits 5 y 3 siempre valen cero y el bit 1 siempre vale uno (esto tambieacuten ocurriacutea en los procesadores anteriores)

CF (Carry Flag bit 0) Si vale 1 indica que hubo arrastre (en caso de suma) hacia o preacutestamo (en caso de resta) desde el bit de orden maacutes significativo del resultado Este indicador es usado por instrucciones que suman o restan nuacutemeros que ocupan varios bytes Las instrucciones de rotacioacuten pueden aislar un bit de la memoria o de un registro ponieacutendolo en el CFPF (Parity Flag bit 2) Si vale uno el resultado tiene paridad par es decir un nuacutemero par de bits a 1 Este indicador se puede utilizar para detectar errores en transmisionesAF (Auxiliary carry Flag bit 4) Si vale 1 indica que hubo arrastre o preacutestamo del nibble (cuatro bits) menos significativo al nibble maacutes significativo Este indicador se usa con las instrucciones de ajuste decimalZF (Zero Flag bit 6) Si este indicador vale 1 el resultado de la operacioacuten es cero SF (Sign Flag bit 7) Refleja el bit maacutes significativo del resultado Como los nuacutemeros negativos se representan en la notacioacuten de complemento a dos este bit representa el signo 0 si es positivo 1 si es negativoTF (Trap Flag bit 8) Si vale 1 el procesador estaacute en modo paso a paso En este modo la CPU automaacuteticamente genera una interrupcioacuten interna despueacutes de cada instruccioacuten permitiendo inspeccionar los resultados del programa a medida que se ejecuta instruccioacuten por instruccioacutenIF (Interrupt Flag bit 9) Si vale 1 la CPU reconoce pedidos de interrupcioacuten externas enmascarables (por el pin INTR) Si vale 0 no se reconocen tales interrupciones Las interrupciones no enmascarables y las internas siempre se reconocen independientemente del valor de IF DF (Direction Flag bit 10) Si vale 1 las instrucciones con cadenas sufriraacuten auto-decremento esto es se procesaraacuten las cadenas desde las direcciones maacutes altas de memoria hacia las maacutes bajas Si vale 0 habraacute auto-incremento lo que quiere decir que las cadenas se procesaraacuten de izquierda a derechaOF (Overflow flag bit 11) Si vale 1 hubo un desborde en una operacioacuten aritmeacutetica con signo esto es un diacutegito significativo se perdioacute debido a que tamantildeo del resultado es mayor que el tamantildeo del destino

El procesador Z80 Registros de propoacutesito general El Z80 posee 14 registros de propoacutesito general de 8 bits denominados A B C D H L y A B C D H L Solamente un set de siete registros y el correspondiente registro de Flags F pueden estar activos al mismo tiempo Una instruccioacuten especial selecciona A y F o A y F mientras que otra instruccioacuten selecciona B C D E H L o C D E H LEl programador puede cambiar raacutepidamente de un conjunto de registros de propoacutesito general a otro Esto proporciona una mayor capacidad de almacenamiento en registros El acceso a datos presentes en registros de la CPU es mucho maacutes raacutepido que el acceso a datos en memoriaLos registros pueden agruparse de a pares formando registros de 16 bits Estos son los pares BC DE y HL (sus equivalentes primas tambieacuten pueden agruparse)

Flags

Aunque los Flags existen fiacutesicamente dentro de la CPU estaacuten agrupados loacutegicamente formando un registro Los Flags del Z80 son los siguientes

Flag de Cero(Z) Toma el valor 1 si el resultado de una operacioacuten es cero Es el bit seis Flag de signo(S) Toma el valor 1 si el resultado de una operacioacuten es negativo Es el bit siete Flag de Carry(C) Este flag es afectado por las instrucciones de desplazamiento y es puesto en 1 oacute 0 seguacuten el valor del bit desplazado Tambieacuten es afectado por las operaciones aritmeacuteticas Este flag es el bit ceroFlag de Paridad y overflow(PV) En el caso de paridad se pone en 1 si el resultado de una operacioacuten posee un nuacutemero par de unos Cuando el flag PV se usa para representar overflow el flag se pone en 1 si ocurre un overflow despueacutes de una operacioacuten aritmeacutetica Este flag es el bit 2Flag H y N Son dos Flip Flop que no pueden ser examinados por las instrucciones de salto condicional El Z80 los usa para las operaciones BCD H representa el rebalse que genera considerando los cuatro bits menos significativos del resultado y N es el flag de resta el cual se activa para indicar si la uacuteltima instruccioacuten ejecutada fue suma o resta En el caso general una instruccioacuten de resta coloca en 1 el flag N y una instruccioacuten de suma lo coloca en 0 Los Flags H y N son los bits 4 y 1 respectivamente

Registros de propoacutesito especial Program Counter Es un registro de 16 bits que indica la direccioacuten de la proacutexima instruccioacuten ejecutar Las instrucciones del Z80 pueden contar de uno dos tres o cuatro bytes

Stack-Pointer Es un registro de 16 bits que indica la direccioacuten de una memoria RAM externa denominada Stack El objetivo de esta aacuterea de memoria es proporcionar un medio de almacenamiento temporal de los registros del usuario registro de Flags y del program Counter La provisioacuten de Stack es fundamental para operaciones tales como los llamados a sub-rutinas e interrupcionesRegistros iacutendices IX e IY Estos registros son de 16 bits disentildeados para permitir un direccionamiento indexado en los programas del Z80 Cuando se ejecuta una instruccioacuten en un modo de direccionamiento indexado se usa uno de los dos registros iacutendices para calcular la direccioacuten del operandoRegistro de interrupciones I Es un registro de 8 bits que puede ser cargado para especificar el byte maacutes significativo de una direccioacuten de memoria El byte menos significativo es proporcionado por el dispositivo que solicita la interrupcioacutenRegistro de refresh de memoria R Es un registro especial disentildeado para proporcionar un refresh automaacutetico de las memorias RAM dinaacutemicas Registro de instrucciones El registro de instrucciones tiene por misioacuten almacenar el coacutedigo de operacioacuten de la instruccioacuten leiacuteda desde memoria Este coacutedigo es descodificado y con esta informacioacuten se dirigen todos los micro-pasos httpwwwoocitiesorgmxantrahxgdocumentosorg_compregistrohtml

Registros del procesadorDentro del procesador hay un conjunto de registros que ofrecen un nivel de memoria que es maacutes raacutepido y pequentildeo que la memoria principal Los registros del procesador sirven para dos funciones Registros visibles de usuario Un programador de lenguaje de maacutequina o ensamblador puede minimizar las referencias a memoria principal mediante un uso oacuteptimo de estos registros Con lenguajes de alto nivel un compilador que optimice coacutedigo intentaraacute hacer una seleccioacuten inteligente de queacute variables asignar a registros y cuaacuteles a ubicaciones de la memoria principal Algunos lenguajes de alto nivel como C permiten que el programador indique al compilador queacute variables se deben almacenar en registros Registros de control y de estado Son utilizados por el procesador para el control de las operaciones o por rutinas privilegiadas del sistema operativo para controlar la ejecucioacuten de los programas No hay una separacioacuten clara de los registros en estas dos categoriacuteas Por ejemplo en algunas maacutequinas el contador de programa es visible para los usuarios pero en otras muchas no lo es Sin embargo para el propoacutesito de la discusioacuten que viene a continuacioacuten es conveniente emplear estas categoriacuteas Registros visibles de usuario Un registro visible de usuario es aqueacutel que puede ser referenciado por medio del lenguaje de maacutequina que ejecuta el procesador y es por lo general accesible para todos los programas incluyendo tanto los programas de aplicacioacuten como los del

sistema Las clases de registro que normalmente estaacuten disponibles son los registros de datos los registros de direccioacuten y los registros de coacutedigos de condicioacuten

Los registros de datosPueden ser asignados por el programador a diversas funciones En algunos casos son de propoacutesito general y pueden ser empleados por cualquier instruccioacuten de maacutequina que lleve a cabo operaciones sobre los datos Sin embargo suelen ponerse ciertas restricciones a menudo Por ejemplo puede haber registros dedicados a operaciones en coma flotante

Los registros de direccioacutenContienen direcciones en la memoria principal de datos e instrucciones o una parte de la direccioacuten que se utiliza en el caacutelculo de la direccioacuten completa Estos registros pueden ser de propoacutesito general o pueden estar dedicados a un modo especiacutefico de direccionamiento Entre los ejemplos se incluyen

Registro iacutendice El direccionamiento indexado es un modo comuacuten de direccionamiento que implica sumar un iacutendice a un valor base para obtener la direccioacuten efectiva

Puntero de segmento Con direccionamiento segmentado la memoria se divide en segmentos que son bloques de palabras de tamantildeo variable Una referencia a memoria consta de una referencia a un segmento particular y un desplazamiento dentro del segmento En este modo se utiliza un registro que alberga una direccioacuten base (ubicacioacuten inicial) de un segmento Puede haber varios registros de este tipo por ejemplo uno para el sistema operativo (es decir cuando se ejecuta coacutedigo del sistema operativo en el procesador) y otro para la aplicacioacuten que estaacute en ejecucioacuten

Puntero de pila Si hay un direccionamiento de pila visible para los usuarios la pila estaraacute por lo general en la memoria principal existiendo un registro dedicado a sentildealar la cima de la pila

Esto permite el uso de instrucciones que no contienen ninguacuten campo de direccioacuten tales como push (poner) y pop (sacar) Una uacuteltima categoriacutea de registros que son al menos parcialmente visibles para los usuarios son aquellos que contienen coacutedigos de condicioacuten (tambieacuten denominados indicadores o flags) Los coacutedigos de condicioacuten son bits activados por el hardware del procesador como resultado de determinadas operaciones

Por ejemplo una operacioacuten aritmeacutetica puede producir un resultado positivo negativo cero o desbordamiento Ademaacutes de almacenar el resultado de esta operacioacuten en un registro o en memoria tambieacuten se activaraacute un coacutedigo de condicioacuten Este coacutedigo puede consultarse posteriormente como parte de una operacioacuten de salto condicional

Los bits de coacutedigo de condicioacuten se agrupan en uno o maacutes registros Estos forman generalmente parte de un registro de control En general las instrucciones de maacutequina permiten leer estos bits mediante referencias impliacutecitas pero no pueden ser alterados por el programador

En algunas maacutequinas una llamada a un procedimiento o subrutina provocaraacute que los registros visibles de usuario se salven automaacuteticamente para luego restaurarlos al retomar Este proceso de salvar y restaurar lo lleva a cabo el procesador como parte de la ejecucioacuten de las instrucciones de llamada y retomo Esto permite que cada procedimiento pueda usar los registros de forma independiente En otras maacutequinas es responsabilidad del programador salvar los contenidos de los registros de usuario visibles que sean relevantes antes de hacer la llamada a un procedimiento incluyendo instrucciones en el programa con tal propoacutesito Asiacute pues las instrucciones de salvar y restaurar pueden ser llevadas a cabo por el hardware o por el software dependiendo de la maacutequina

Registros de control y de estado Varios registros se emplean para controlar las operaciones del procesador En la mayoriacutea de las maacutequinas la mayor parte de estos registros no son visibles para los usuarios Algunos de ellos pueden estar accesibles a las instrucciones de maacutequina ejecutadas en un modo de control o modo del sistemaPor supuesto maacutequinas diferentes tendraacuten organizaciones diferentes de registros y podraacuten usar terminologiacuteas distintas

Ademaacutes de los registros MAR MBR IOAR y IOBR mencionados anteriormente los siguientes registros son esenciales en la ejecucioacuten de instrucciones Contador de programa (PC Program Counter) Contiene la direccioacuten de la instruccioacuten a ser leiacuteda Registro de instruccioacuten (IR Instruction Regiacutester) Contiene la uacuteltima instruccioacuten leiacuteda Todos los disentildeos de procesadores

incluyen ademaacutes un registro o conjunto de registros conocidos a menudo como palabra de estado del programa (PSW Program Status Word) que contiene informacioacuten de estado Normalmente la PSW contiene coacutedigos de condicioacuten junto a otra informacioacuten de estado Entre los campos e indicadores maacutes comunes se incluyen los siguientes

Signo Contiene el bit del signo de la uacuteltima operacioacuten aritmeacutetica efectuada Cero Se activa cuando el resultado de una operacioacuten aritmeacutetica es cero

Acarreo Se activa cuando como resultado de una suma o una resta se produce un acarreo maacutes allaacute del bit maacutes significativo Se utiliza en operaciones aritmeacuteticas de maacutes de una palabra

Igualdad Se activa si una comparacioacuten loacutegica da como resultado la igualdad Desbordamiento Empleado para sentildealar un desbordamiento aritmeacutetico Habilitarinhahilitar interrupcioacutenes Empleado para habilitar o inhabilitar interrupciones Cuando Las interrupciones estaacuten

inhabilitadas el procesador las ignora Esto es muy deseable cuando el sistema operativo estaacute ocupado en el tratamiento de otra interrupcioacuten

Supervisor Indica si el procesador estaacute ejecutando en modo supervisor o en modo usuario Ciertas instrucciones privilegiadas soacutelo se pueden ejecutar en modo supervisor y soacutelo se puede tener acceso a ciertas aacutereas de memoria en modo supervisor

En el disentildeo de un procesador especiacutefico se pueden encontrar una serie de registros relacionados con el estado y el control Ademaacutes de la PSW puede haber un puntero a un bloque de memoria que contenga informacioacuten de estado adicional En maacutequinas que utilizan varios tipos de interrupcioacuten se puede ofrecer una serie de registros con punteros a cada rutina de tratamiento de interrupcioacuten Si se utiliza una pila para implementar ciertas funciones (por ejemplo las llamadas a procedimientos) entonces se necesita un puntero a la pila Por uacuteltimo los registros tambieacuten pueden utilizarse para el control de las operaciones de ES Una serie de factores inciden en el disentildeo de la organizacioacuten de los registros de control y estado Un punto clave es el soporte del sistema operativo Cierto tipo de informacioacuten de control es de utilidad especiacutefica para el sistema operativo Si el disentildeador del procesador dispone de una visioacuten funcional del sistema operativo la organizacioacuten de los registros puede adaptarse convenientementeOtra decisioacuten clave del disentildeo es la asignacioacuten de informacioacuten de control a los registros y la memoria Es habitual dedicar los primeros centenares o miles de palabras (las maacutes bajas) de memoria para el control El disentildeador debe decidir la cantidad de informacioacuten de control que debe residir en los raacutepidos y costosos registros junto a la cantidad que debe permanecer en memoria principal que es maacutes lenta y barata

httpslamiradelsniperwordpresscom20120820registros-del-procesador

1 Los registros

El procesador necesita para su funcionamiento de ciertas aacutereas de almacenamiento que aquiacute se llaman registros y que son de dimensiones miacutenimas [3] sin embargo tienen la ventaja de su rapidez Comparados con los accesos a RAM los de registro son como miacutenimo 10 veces maacutes veloces

El 8088 dispone de catorce registros de 16 bits que se agrupan en cuatro grupos y que reciben nombres especiales (precisamente los que se utilizan para designarlos en lenguaje ensamblador)

sect311 Registros de uso general

Existen 4 registros denominados AX BX CX y DX que en realidad tienen asignados usos caracteriacutesticos aunque pueden ser utilizados a discrecioacuten para cualquier cosa que necesitemos

AX es denominado acumulador suele contener uno de los operandos que intervienen en las operaciones aritmeacuteticas y loacutegicas y despueacutes de esta el resultado de la operacioacuten En general

las instrucciones que trabajan con este registro (o su mitad inferior) tienen un microcoacutedigo maacutes simple que la misma instruccioacuten ejecutada con otro registro

BX es el registro base suele contener la direccioacuten de inicio de una tabla de valores

CX es denominado contador Las instrucciones de bucle (LOOP) utilizan este registro como contador

DX es un registro de datos multiuso Se utiliza en operaciones de multiplicacioacuten y divisioacuten junto con AX En operaciones de entradasalida de puertos INOUT su mitad inferior DL contiene el

nuacutemero de puerto ( 25)

Aunque estos cuatro registros son de 16 bits (como los 10 restantes) [6] en caso necesario pueden ser utilizados en dos mitades (nibbles) High y Low de 8 bits con lo que puede considerarse que existen 12 registros de uso general (no simultaacuteneos) los anteriores y sus mitades AH AL BH BL CH CL DH y DL

sect312 Registros de segmento

Se dispone de cuatro registros que sirven para contener las direcciones de otros tantos segmentos (zonas de 64 KB de memoria) Utilizaacutendolos en conjuncioacuten con otros registros que sentildealan las

direcciones concretas dentro de estos segmentos (los desplazamientos ) permiten manejar la totalidad de la memoria direccionable (el bus de direcciones es de 20 bits) Ver al respecto el epiacutegrafe

Direccionamiento segmentado ( 51)

Segmento de coacutedigo CS (Code segment) Sentildeala la direccioacuten del segmento de coacutedigo del

programa que se estaacute ejecutando ( E132) Segmento de datos DS (Data segment) Sentildeala la direccioacuten del segmento de datos del

programa en ejecucioacuten ( E132) Segmento de pila SS (Stack segment) Sentildeala la direccioacuten del segmento donde estaacute la pila

del programa ( E132) Segmento extra ES (Extra segment) Es un segmento auxiliar a los anteriores se utiliza para

sentildealar espacio extra en alguno de los segmentos o para almacenar momentaacuteneamente direcciones intermedias

Nota Puede ocurrir que programas pequentildeos utilicen el mismo segmento para el coacutedigo los datos y la pila

sect313 Registros de puntero

Son 5 registros destinados a contener direcciones estas direcciones son desplazamientos dentro de los

segmentos indicados por los registros de segmento (ver figura 51 Fig2)

El primero denominado indistintamente puntero de instruccioacuten IP (Instruccioacuten pointer) y contador de programa PC(Program counter) indica el desplazamiento (dentro del segmento de coacutedigo CS) de la proacutexima instruccioacuten a ejecutar

El puntero de pila SP (Stack Pointer) sentildeala el desplazamiento del final de la pila dentro del segmento de pila SS En caso necesario la pila puede crecer a partir de este punto de forma que por ejemplo una nueva invocacioacuten de funcioacuten crearaacute un nuevo registro de activacioacuten que comenzaraacute en este punto

El puntero base BP (Base pointer) sentildeala el desplazamiento (dentro del segmento de pila SS) donde se encuentra el origen de la zona ocupada por las variables dinaacutemicas

Existen dos registros denominados de iacutendice en razoacuten de su utilizacioacuten muy particular el iacutendice fuente SI (Source index) y el iacutendice destino DI (Destination index) Generalmente estos dos registros se utilizan con alguno de los registros de uso general y con ciertas

instrucciones especiacuteficamente pensadas para transferir datos (dentro de un rango de posiciones de memoria) desde un punto inicial de un segmento de datos a otro

Ver en la paacutegina adjunta un ejemplo relativo al uso de punteros ( 32 Ejemplo-2)

sect314 Registro de estado

Existe un registro especial el registro de estado (FLAGS) en el que 9 de los 18 bits actuacutean como semaacuteforos (indicadores del estado del procesador y del resultado de determinadas operaciones) Por ejemplo si despueacutes de una suma aritmeacutetica hay o no desbordamiento del bit maacutes significativo

Los nombres y situacioacuten de cada uno dentro de la palabra de 16 bits se muestran en la figura 2

Cada bits individual puede estar activo (1) o inactivo (0) y tiene un identificador que termina en F(Flag) Son los siguientes

Bit Indicador de Uso

CF Acarreo (Carry Flag)

Indicador de arrastre del bit de mayor orden que puede ocurrir en las operaciones aritmeacuteticas suma y resta

PF Paridad (Parity Flag)

Si estaacute activo Indica un nuacutemero par de bits activos (bits cuyo contenido es 1) Esta informacioacuten es uacutetil cuando el procesador controla transmisiones de datos

AF Acarreo auxiliar Indicador de ajuste en operaciones aritmeacuteticas con cantidades

BCD ( E01w1)

ZF Cero (Zero Flag) Estaacute activo si el resultado de operacioacuten es cero o resultado de comparacioacuten igual

SF Signo (Sign Flag) Si estaacute activo indica que el resultado de operacioacuten o de comparacioacuten son negativos [5]

TF Detencioacuten (Trap Flag)

Si estaacute activo el procesador genera automaacuteticamente una interrupcioacuten despueacutes de la ejecucioacuten de cada instruccioacuten lo que permite controlar paso a paso la ejecucioacuten del programa Este bit debe estar normalmente inactivo (a 0)

IF Interrupcioacuten (Interrupt Flag)

Este bit controla el estado del sistema de interrupciones

enmascarables ( 24) Cuando estaacute activo (1) permite las

interrupciones el estado inactivo (0) las deshabilita

DF Direccioacuten (Direction Flag)

Indica la direccioacuten de las operaciones

OF Desbordamiento (Overflow Flag)

Sentildeala desbordamiento aritmeacutetico

Nota Los usuarios de MS-DOS o Windows puede usar el programa DEBUG ( 171) para inspeccionar y modificar el contenido de los registros de la siguiente forma

Invocar DEBUG desde una ventana DOS (suponemos que estamos en Windows el prompt es un guioacuten -)

introducir el comando R (pedimos que nos muestre el contenido de los registros)

Salir de Debug con Q

En mi PC la respuesta al comando tiene el siguiente aspecto

AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=1779 ES=1779 SS=1779 CS=1779 IP=0100 NV UP EI PL NZ NA PO NC

Los valores estaacuten expresados en hexadecimal La uacuteltima secuencia de caracteres (NV UP EI PL NZ NA PO NC) muestra el contenido del registro de estado (el bit TF de detencioacuten no se muestra) el significado de la notacioacuten utilizada es el siguiente

Bit Indicador de Indicativo si bit 1 Indicativo si bit 0

CF Acarreo CY (Carry yes) NC (No Carry)

PF Paridad PE (Parity Even) paridad par PO (Parity Odd) paridad impar

AF Acarreo auxiliar AC (Auxiliar Carry) NA (No Auxiliar)

ZF Cero ZR (Zero) NZ (No Zero)

SF Signo NG (Negative) negativo PL (Plus) positivo

IF Interrupcioacuten EI (Enabled Interrupt) activa DI (Disabled Interrupt) desactivada

DF Direccioacuten DN (Down) decremento UP incremento

OF Desbordamiento OV (Overflow) NV (No overflow)

Tambieacuten es posible inspeccionar el contenido de un solo registro antildeadiendo al comando R el nombre del registro Por ejemplo el comando R IP muestra el contenido del contador de programa Los nombres que pueden utilizarse para los registros son los siguientes AX BX CX DX SP BP SI DI DS ES SS CS IP y F (este uacuteltimo para el registro de estado)

Despueacutes de un comando de este tipo DEBUG responde con un prompt distinto del habitual para indicar que debe introducir el nuevo valor que desea para el registro Pulsando INTRO se vuelve al modo normal

sect315 Comentario

Observe que tanto el registro contador de programa IP como el de base BP siempre contienen direcciones de memoria (los otros pueden contener direcciones o datos) Ni los registros de segmento ni los de puntero se pueden dividir en mitades (como los de uso general)

httpwwwzatorcomHardwareH3_2htm

Definiciones de registros Definicioacuten 1 un registro es una memoria de alta velocidad y poca capacidad integrada en el microprocesador que permite guardar transitoriamente y acceder a valores muy usados generalmente en operaciones matemaacuteticas Definicioacuten 2 un registro es una porcioacuten de memoria ultrarraacutepida de poca capacidad e integrado al microprocesador que permite almacenar y acceder datos usados frecuentemente Se emplean para aumentar la velocidad de ejecucioacuten de los programas

3 Funcioacuten de los registros Los registros estaacuten en la cumbre de la jerarquiacutea de memoria y son la manera maacutes raacutepida que tiene el sistema de almacenar datos Los registros se miden generalmente por el nuacutemero de bits que almacenan por ejemplo un registro de 8 bits o un registro de 32 bitsldquo La CPU contiene un conjunto de localidades de almacenamiento temporal de datos de alta velocidad llamada registro Algunos de los registros estaacuten dedicados al control y solo la unidad de control tiene acceso a ellos Los registros restantes son los registros de uso general y el programador es el usuario que tiene acceso a ellos

4 Los nombres de los registros describen la forma como algunas instrucciones enensamblador las emplean

5 Algunos registros basicos Dentro del conjunto baacutesico de registros de control se deben incluir a los siguientesa middot Contador de programa (PC)b middot Registro de direcciones de la memoria (MAR)c middot Registro de datos (RD)d middot Registro de instrucciones (IR)e middot Palabra de estado de programa (PSW)

6 Funcioacuten del PC La funcioacuten del PC consiste en seguir la pista de la instruccioacuten por buscar (capturar) en el siguiente ciclo de maquina por lo tanto contiene la direccioacuten de la siguiente instruccioacuten por ejecutar El PC es modificado dentro del ciclo de buacutesqueda de la instruccioacuten actual mediante la suma de una constante El numero que se agrega al PC es la longitud de una instruccioacuten en palabras Por lo tanto si una instruccioacuten tiene una palabra de longitud se agrega 1 al PC si una instruccioacuten tiene dos palabras de largo se agrega 2 y asiacute sucesivamente

7 Funcioacuten de MAR Registro de direcciones de la memoria (MAR) funciona como registro de enlace entre la CPU y el canal de direcciones Cuando se logra el acceso a la memoria la direccioacuten es colocada en el MAR por la unidad de control y ahiacute permanece hasta que se completa la transaccioacuten El numero de bit que hay en el MAR es igual al del canal de direcciones La diferencia que existe entre el PC y el MAR es que durante el ciclo de ejecucioacuten de una instruccioacuten el PC y el MAR sirven al mismo fin Sin embargo muchas de las instrucciones de la maquina hacen referencia a la memoria y operan con los datos que

estaacuten en ella Como la direccioacuten de los datos suele ser diferente de la instruccioacuten siguiente se necesita el MAR

8 Funcioacuten de RD Registro de datos la funcioacuten del RD consiste en proporcionar un aacuterea de almacenamiento temporal (memoria intermedia acumulada o buffer) de datos que se intercambian entre la PCU y la memoria Los datos pueden ser instrucciones (obtenidos en el ciclo de ejecucioacuten) o datos del operando (obtenidos en el ciclo de ejecucioacuten) Debido a su conexioacuten directa con el canal de datos el RD contiene el mismo numero de bit que dicho canal

9 Funcioacuten de IR Registro de instrucciones (IR) es un registro que conserva el coacutedigo de operacioacuten de la instruccioacuten en todo el ciclo de la maquina El coacutedigo es empleado por la unidad de control de la CPU para generar las sentildeales apropiadas que controla le ejecucioacuten de la instruccioacuten La longitud del ER es la longitud en bit del coacutedigo de operacioacuten

10 Funcioacuten de PSW Palabra de estado de programa (PSW) la palabra de estado o condicioacuten de programa almacena informacioacuten pertinente sobre el programa que este ejecutaacutendose Por ejemplo al completarse una funcioacuten de la unidad aritmeacutetica loacutegica se modifica un conjunto de bit llamados coacutedigos (o sentildeales de condicioacuten) Estos bit especifican si el resultado de una operacioacuten aritmeacutetica fue 0 o negativo o si el resultado se desbordoacute Ademaacutes el PSW contiene bit que hacen posible que la computadora responda a solicitudes de servicio asincroacutenicas generadas por dispositivos de Entrada-Salida o condiciones de error interno Estas sentildeales se denominan interrupciones

  • 1 Los registros
  • sect311 Registros de uso general
  • sect312 Registros de segmento
  • sect313 Registros de puntero
  • sect314 Registro de estado
  • sect315 Comentario
Page 5: Registros de procesador.docx

3 Registros de banderas4 Registros de Puntero de instruccioacuten5 Registros de Pila

Registros de segmento Un registro de segmento tiene 16 bits de longitud y facilita un aacuterea de memoria para direccionamiento conocida como el segmento actualRegistro CS El DOS almacena la direccioacuten inicial del segmento de coacutedigo de un programa en el registro CS Esta direccioacuten de segmento mas un valor de desplazamiento en el registro apuntador de instruccioacuten (IP) indica la direccioacuten de una instruccioacuten que es buscada para su ejecucioacutenRegistro DS La direccioacuten inicial de un segmento de datos de programa es almacenada en el registro DS En teacuterminos sencillos esta direccioacuten mas un valor de desplazamiento en una instruccioacuten genera una referencia a la localidad de un byte especifico en el segmento de datosRegistro SS El registro SS permite la colocacioacuten en memoria de una pila para almacenamiento temporal de direcciones y datos El DOS almacena la direccioacuten de inicio del segmento de pila de un programa en le registro SS Esta direccioacuten de segmento mas un valor de desplazamiento en el registro del apuntador de pila (SP) indica la palabra actual en la pila que esta siendo direccionadaRegistros ES Alguna operaciones con cadenas de caracteres (datos de caracteres) utilizan el registro extra de segmento para manejar el direccionamiento de memoria En este contexto el registro ES esta asociado con el registro DI (iacutendice) Un programa que requiere el uso del registro ES puede inicializarlo con una direccioacuten de segmento apropiadaRegistros FS y GS Son registros extra de segmento en los procesadores 80386 y posteriores

Registros de propoacutesito general Los registros de propoacutesito general AX BX CX y DX son los caballos de batalla del sistema Son uacutenicos 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 su nombreRegistro AX El registro AX el acumulador principal es utilizado para operaciones que implican entradasalida y la mayor parte de la aritmeacutetica Por ejemplo las instrucciones para multiplicar dividir y traducir suponen el uso del AX Tambieacuten algunas operaciones generan coacutedigo mas eficiente si se refieren al AX en lugar de a los otros registrosRegistro BX El BX es conocido como el registro base ya que es el uacutenico registro de propoacutesito general que puede ser iacutendice para direccionamiento indexado Tambieacuten es comuacuten emplear el BX para caacutelculosRegistro DX El DX es conocido como l registro de datos Alguna operaciones de entradasalida requieren uso y las operaciones de multiplicacioacuten y divisioacuten con cifras grandes suponen al DX y al AX trabajando juntos

Registro de Apuntador de Instrucciones El registro apuntador de instrucciones (IP) de 16 bits contiene el desplazamiento de direccioacuten de la siguiente instruccioacuten que se ejecuta El IP esta asociado con el registro CS en el sentido de que el IP indica la instruccioacuten actual dentro del segmento de coacutedigo que se esta ejecutando actualmente Los procesadores 80386 y posteriores tienen un IP ampliado de 32 bits llamado EIPEn el ejemplo siguiente el registro CS contiene 25A4[0]H y el IP contiene 412H Para encontrar la siguiente instruccioacuten que seraacute ejecutada el procesador combina las direcciones en el CS y el IPSegmento de direccioacuten en el registro CS 25A40H Desplazamiento de direccioacuten en el registro IP + 412H Direccioacuten de la siguiente instruccioacuten 25E52H

Registros Apuntadores Los registros SP (apuntador de la pila) Y BP (apuntador de base) estaacuten asociados con el registro SS y permiten al sistema accesar datos en el segmento de la pila

Registro SP El apuntador de la pila 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 Los procesadores 80386 y posteriores tienen un apuntador de pila de 32 bits el registro ESP El sistema maneja de forma automaacutetica estos registrosEn el ejemplo siguiente el registro SS contiene la direccioacuten de segmento 27B3[0]H y el SP el desplazamiento 312H Para encontrar la palabra actual que esta siendo procesada en la pila la computadora combina las direcciones en el SS y el SPRegistro BP El BP de 16 bits facilita la referencia de paraacutemetros los cuales son datos y direcciones transmitidos viacutea pila Los procesadores 80386 y posteriores tienen un BP ampliado de 32 bits llamado el registro EBP

Registros Indice Los registros SI y DI estaacuten disponibles para direccionamiento indexado y para sumas y restas

Registro SI El registro iacutendice fuente de 16 bits es requerido por algunas operaciones con cadenas (de caracteres) En este contexto el SI esta asociado con el registro DS Los procesadores 80386 y posteriores permiten el uso de un registro ampliado de 32 bits el ESIRegistro DI El registro iacutendice destino tambieacuten es requerido por algunas operaciones con cadenas de caracteres En este contexto el DI esta asociado con el registro ES Los procesadores 80386 y posteriores permiten el uso de un registro ampliado de 32 bits el EDI

Registro de Banderas De los 16 bits del registro de banderas nueve son comunes a toda la familia de procesadores 8086 y sirven para indicar el estado actual de la maquina y el resultado del procesamiento Muchas instrucciones que piden comparaciones y aritmeacutetica cambian el estado de las banderas algunas cuyas instrucciones pueden realizar pruebas para determinar la accioacuten subsecuente En resumen los bits de las banderas comunes son como sigue

OF (Overflow desbordamiento) Indica desbordamiento de un bitde orden alto (mas a la izquierda) despueacutes de una operacioacuten aritmeacuteticaDF (direccioacuten) Designa la direccioacuten hacia la izquierda o hacia la derecha para mover o comparar cadenas de caracteresIF (interrupcioacuten) Indica que una interrupcioacuten externa como la entrada desde el teclado sea procesada o ignoradaTF (trampa) Permite la operacioacuten del procesador en modo de un paso Los programas depuradores como el DEBUG activan esta bandera de manera que usted pueda avanzar en la ejecucioacuten de una sola instruccioacuten a un tiempo para examinar el efecto de esa instruccioacuten sobre los registros de memoriaSF (signo) Contiene el signo resultante de una operacioacuten aritmeacutetica (0 = positivo y 1 = negativo)ZF (cero) Indica el resultado de una operacioacuten aritmeacutetica o de comparacioacuten (0 = resultado diferente de cero y 1 = resultado igual a cero)AF (acarreo auxiliar) Contiene un acarreo externo del bit 3 en un dato de 8 bits para aritmeacutetica especializadaPF (paridad) Indica paridad par o impar de una operacioacuten en datos de 8 bits de bajo orden (mas a la derecha)CF (acarreo) Contiene el acarreo de orden mas alto (mas a la izquierda) despueacutes de una operacioacuten aritmeacutetica tambieacuten lleva el contenido del ultimo bit en una operacioacuten de corrimiento o de rotacioacuten Las banderas estaacuten en el registro de banderas en las siguientes posiciones

Las banderas mas importantes para la programacioacuten en ensamblador son O S Z y C para operaciones de comparacioacuten y aritmeacuteticas y D para operaciones de cadenas de caracteres Los procesadores 80286 y posteriores tienen algunas banderas usadas para propoacutesitos internos en especial las que afectan al modo protegido Los procesadores 80286 y posteriores tienen un registro extendido de banderas conocido como Eflags

Registros de PILA La pila es un aacuterea de memoria importante y por ello tiene en vez de uno dos registros que se usan como desplazamiento (offset) para apuntar a su contenido Se usan como complemento al registro y son

-SP- Stack Pointer Se traduce como puntero de pila y es el que se reserva el procesador para uso propio en instrucciones de manipulado de pila Por lo general el programador no debe alterar su contenido-BP- Base pointer Se usa como registro auxiliar El programador puede usarlo para su provechoClaro que estos nombres y tipos de registros son estaacutendar ya que cada fabricante puede utilizar otros registro que reemplacen a estos o los auxilien aun asiacute los fabricantes que usan otros registro tienen la misma funcioacuten que los anteriormente mencionados

Ejemplo Registros de uso general del 80868088 Tienen 16 bits cada uno y son ocho

1 AX = Registro acumulador dividido en AH y AL (8 bits cada uno) Usaacutendolo se produce (en general) una instruccioacuten que ocupa un byte menos que si se utilizaran otros registros de uso general Su parte maacutes baja AL tambieacuten tiene esta propiedad El uacuteltimo registro mencionado es el equivalente al acumulador de los procesadores anteriores (8080 y 8085) Ademaacutes hay instrucciones como DAA DAS AAA AAS AAM AAD LAHF SAHF CBW IN y OUT que trabajan con AX o con uno de sus dos bytes (AH o AL) Tambieacuten se utiliza este registro (junto con DX a veces) en multiplicaciones y divisiones

2 BX = Registro base dividido en BH y BL Es el registro base de propoacutesito similar (se usa para direccionamiento indirecto) y es una versioacuten maacutes potente del par de registros HL de los procesadores anteriores

3 CX = Registro contador dividido en CH y CL Se utiliza como contador en bucles (instruccioacuten LOOP) en operaciones con cadenas (usando el prefijo REP) y en desplazamientos y rotaciones (usando el registro CL en los dos uacuteltimos casos)

4 DX = Registro de datos dividido en DH y DL Se utiliza junto con el registro AX en multiplicaciones y divisiones en la instruccioacuten CWD y en IN y OUT para direccionamiento indirecto de puertos (el registro DX indica el nuacutemero de puerto de entradasalida)

5 SP = Puntero de pila (no se puede subdividir) Aunque es un registro de uso general debe utilizarse soacutelo como puntero de pila la cual sirve para almacenar las direcciones de retorno de subrutinas y los datos temporarios (mediante las instrucciones PUSH y POP) Al introducir (push) un valor en la pila a este registro se le resta dos mientras que al extraer (pop) un valor de la pila este a registro se le suma dos

6 BP = Puntero base (no se puede subdividir) Generalmente se utiliza para realizar direccionamiento indirecto dentro de la pila

7 SI = Puntero iacutendice (no se puede subdividir) Sirve como puntero fuente para las operaciones con cadenas Tambieacuten sirve para realizar direccionamiento indirecto

8 DI = Puntero destino (no se puede subdividir) Sirve como puntero destino para las operaciones con cadenas Tambieacuten sirve para realizar direccionamiento indirecto

Cualquiera de estos registros puede utilizarse como fuente o destino en operaciones aritmeacuteticas y loacutegicas

Indicadores (flags) Hay nueve indicadores de un bit en este registro de 16 bits Los cuatro bits maacutes significativos estaacuten indefinidos mientras que hay tres bits con valores determinados los bits 5 y 3 siempre valen cero y el bit 1 siempre vale uno (esto tambieacuten ocurriacutea en los procesadores anteriores)

CF (Carry Flag bit 0) Si vale 1 indica que hubo arrastre (en caso de suma) hacia o preacutestamo (en caso de resta) desde el bit de orden maacutes significativo del resultado Este indicador es usado por instrucciones que suman o restan nuacutemeros que ocupan varios bytes Las instrucciones de rotacioacuten pueden aislar un bit de la memoria o de un registro ponieacutendolo en el CFPF (Parity Flag bit 2) Si vale uno el resultado tiene paridad par es decir un nuacutemero par de bits a 1 Este indicador se puede utilizar para detectar errores en transmisionesAF (Auxiliary carry Flag bit 4) Si vale 1 indica que hubo arrastre o preacutestamo del nibble (cuatro bits) menos significativo al nibble maacutes significativo Este indicador se usa con las instrucciones de ajuste decimalZF (Zero Flag bit 6) Si este indicador vale 1 el resultado de la operacioacuten es cero SF (Sign Flag bit 7) Refleja el bit maacutes significativo del resultado Como los nuacutemeros negativos se representan en la notacioacuten de complemento a dos este bit representa el signo 0 si es positivo 1 si es negativoTF (Trap Flag bit 8) Si vale 1 el procesador estaacute en modo paso a paso En este modo la CPU automaacuteticamente genera una interrupcioacuten interna despueacutes de cada instruccioacuten permitiendo inspeccionar los resultados del programa a medida que se ejecuta instruccioacuten por instruccioacutenIF (Interrupt Flag bit 9) Si vale 1 la CPU reconoce pedidos de interrupcioacuten externas enmascarables (por el pin INTR) Si vale 0 no se reconocen tales interrupciones Las interrupciones no enmascarables y las internas siempre se reconocen independientemente del valor de IF DF (Direction Flag bit 10) Si vale 1 las instrucciones con cadenas sufriraacuten auto-decremento esto es se procesaraacuten las cadenas desde las direcciones maacutes altas de memoria hacia las maacutes bajas Si vale 0 habraacute auto-incremento lo que quiere decir que las cadenas se procesaraacuten de izquierda a derechaOF (Overflow flag bit 11) Si vale 1 hubo un desborde en una operacioacuten aritmeacutetica con signo esto es un diacutegito significativo se perdioacute debido a que tamantildeo del resultado es mayor que el tamantildeo del destino

El procesador Z80 Registros de propoacutesito general El Z80 posee 14 registros de propoacutesito general de 8 bits denominados A B C D H L y A B C D H L Solamente un set de siete registros y el correspondiente registro de Flags F pueden estar activos al mismo tiempo Una instruccioacuten especial selecciona A y F o A y F mientras que otra instruccioacuten selecciona B C D E H L o C D E H LEl programador puede cambiar raacutepidamente de un conjunto de registros de propoacutesito general a otro Esto proporciona una mayor capacidad de almacenamiento en registros El acceso a datos presentes en registros de la CPU es mucho maacutes raacutepido que el acceso a datos en memoriaLos registros pueden agruparse de a pares formando registros de 16 bits Estos son los pares BC DE y HL (sus equivalentes primas tambieacuten pueden agruparse)

Flags

Aunque los Flags existen fiacutesicamente dentro de la CPU estaacuten agrupados loacutegicamente formando un registro Los Flags del Z80 son los siguientes

Flag de Cero(Z) Toma el valor 1 si el resultado de una operacioacuten es cero Es el bit seis Flag de signo(S) Toma el valor 1 si el resultado de una operacioacuten es negativo Es el bit siete Flag de Carry(C) Este flag es afectado por las instrucciones de desplazamiento y es puesto en 1 oacute 0 seguacuten el valor del bit desplazado Tambieacuten es afectado por las operaciones aritmeacuteticas Este flag es el bit ceroFlag de Paridad y overflow(PV) En el caso de paridad se pone en 1 si el resultado de una operacioacuten posee un nuacutemero par de unos Cuando el flag PV se usa para representar overflow el flag se pone en 1 si ocurre un overflow despueacutes de una operacioacuten aritmeacutetica Este flag es el bit 2Flag H y N Son dos Flip Flop que no pueden ser examinados por las instrucciones de salto condicional El Z80 los usa para las operaciones BCD H representa el rebalse que genera considerando los cuatro bits menos significativos del resultado y N es el flag de resta el cual se activa para indicar si la uacuteltima instruccioacuten ejecutada fue suma o resta En el caso general una instruccioacuten de resta coloca en 1 el flag N y una instruccioacuten de suma lo coloca en 0 Los Flags H y N son los bits 4 y 1 respectivamente

Registros de propoacutesito especial Program Counter Es un registro de 16 bits que indica la direccioacuten de la proacutexima instruccioacuten ejecutar Las instrucciones del Z80 pueden contar de uno dos tres o cuatro bytes

Stack-Pointer Es un registro de 16 bits que indica la direccioacuten de una memoria RAM externa denominada Stack El objetivo de esta aacuterea de memoria es proporcionar un medio de almacenamiento temporal de los registros del usuario registro de Flags y del program Counter La provisioacuten de Stack es fundamental para operaciones tales como los llamados a sub-rutinas e interrupcionesRegistros iacutendices IX e IY Estos registros son de 16 bits disentildeados para permitir un direccionamiento indexado en los programas del Z80 Cuando se ejecuta una instruccioacuten en un modo de direccionamiento indexado se usa uno de los dos registros iacutendices para calcular la direccioacuten del operandoRegistro de interrupciones I Es un registro de 8 bits que puede ser cargado para especificar el byte maacutes significativo de una direccioacuten de memoria El byte menos significativo es proporcionado por el dispositivo que solicita la interrupcioacutenRegistro de refresh de memoria R Es un registro especial disentildeado para proporcionar un refresh automaacutetico de las memorias RAM dinaacutemicas Registro de instrucciones El registro de instrucciones tiene por misioacuten almacenar el coacutedigo de operacioacuten de la instruccioacuten leiacuteda desde memoria Este coacutedigo es descodificado y con esta informacioacuten se dirigen todos los micro-pasos httpwwwoocitiesorgmxantrahxgdocumentosorg_compregistrohtml

Registros del procesadorDentro del procesador hay un conjunto de registros que ofrecen un nivel de memoria que es maacutes raacutepido y pequentildeo que la memoria principal Los registros del procesador sirven para dos funciones Registros visibles de usuario Un programador de lenguaje de maacutequina o ensamblador puede minimizar las referencias a memoria principal mediante un uso oacuteptimo de estos registros Con lenguajes de alto nivel un compilador que optimice coacutedigo intentaraacute hacer una seleccioacuten inteligente de queacute variables asignar a registros y cuaacuteles a ubicaciones de la memoria principal Algunos lenguajes de alto nivel como C permiten que el programador indique al compilador queacute variables se deben almacenar en registros Registros de control y de estado Son utilizados por el procesador para el control de las operaciones o por rutinas privilegiadas del sistema operativo para controlar la ejecucioacuten de los programas No hay una separacioacuten clara de los registros en estas dos categoriacuteas Por ejemplo en algunas maacutequinas el contador de programa es visible para los usuarios pero en otras muchas no lo es Sin embargo para el propoacutesito de la discusioacuten que viene a continuacioacuten es conveniente emplear estas categoriacuteas Registros visibles de usuario Un registro visible de usuario es aqueacutel que puede ser referenciado por medio del lenguaje de maacutequina que ejecuta el procesador y es por lo general accesible para todos los programas incluyendo tanto los programas de aplicacioacuten como los del

sistema Las clases de registro que normalmente estaacuten disponibles son los registros de datos los registros de direccioacuten y los registros de coacutedigos de condicioacuten

Los registros de datosPueden ser asignados por el programador a diversas funciones En algunos casos son de propoacutesito general y pueden ser empleados por cualquier instruccioacuten de maacutequina que lleve a cabo operaciones sobre los datos Sin embargo suelen ponerse ciertas restricciones a menudo Por ejemplo puede haber registros dedicados a operaciones en coma flotante

Los registros de direccioacutenContienen direcciones en la memoria principal de datos e instrucciones o una parte de la direccioacuten que se utiliza en el caacutelculo de la direccioacuten completa Estos registros pueden ser de propoacutesito general o pueden estar dedicados a un modo especiacutefico de direccionamiento Entre los ejemplos se incluyen

Registro iacutendice El direccionamiento indexado es un modo comuacuten de direccionamiento que implica sumar un iacutendice a un valor base para obtener la direccioacuten efectiva

Puntero de segmento Con direccionamiento segmentado la memoria se divide en segmentos que son bloques de palabras de tamantildeo variable Una referencia a memoria consta de una referencia a un segmento particular y un desplazamiento dentro del segmento En este modo se utiliza un registro que alberga una direccioacuten base (ubicacioacuten inicial) de un segmento Puede haber varios registros de este tipo por ejemplo uno para el sistema operativo (es decir cuando se ejecuta coacutedigo del sistema operativo en el procesador) y otro para la aplicacioacuten que estaacute en ejecucioacuten

Puntero de pila Si hay un direccionamiento de pila visible para los usuarios la pila estaraacute por lo general en la memoria principal existiendo un registro dedicado a sentildealar la cima de la pila

Esto permite el uso de instrucciones que no contienen ninguacuten campo de direccioacuten tales como push (poner) y pop (sacar) Una uacuteltima categoriacutea de registros que son al menos parcialmente visibles para los usuarios son aquellos que contienen coacutedigos de condicioacuten (tambieacuten denominados indicadores o flags) Los coacutedigos de condicioacuten son bits activados por el hardware del procesador como resultado de determinadas operaciones

Por ejemplo una operacioacuten aritmeacutetica puede producir un resultado positivo negativo cero o desbordamiento Ademaacutes de almacenar el resultado de esta operacioacuten en un registro o en memoria tambieacuten se activaraacute un coacutedigo de condicioacuten Este coacutedigo puede consultarse posteriormente como parte de una operacioacuten de salto condicional

Los bits de coacutedigo de condicioacuten se agrupan en uno o maacutes registros Estos forman generalmente parte de un registro de control En general las instrucciones de maacutequina permiten leer estos bits mediante referencias impliacutecitas pero no pueden ser alterados por el programador

En algunas maacutequinas una llamada a un procedimiento o subrutina provocaraacute que los registros visibles de usuario se salven automaacuteticamente para luego restaurarlos al retomar Este proceso de salvar y restaurar lo lleva a cabo el procesador como parte de la ejecucioacuten de las instrucciones de llamada y retomo Esto permite que cada procedimiento pueda usar los registros de forma independiente En otras maacutequinas es responsabilidad del programador salvar los contenidos de los registros de usuario visibles que sean relevantes antes de hacer la llamada a un procedimiento incluyendo instrucciones en el programa con tal propoacutesito Asiacute pues las instrucciones de salvar y restaurar pueden ser llevadas a cabo por el hardware o por el software dependiendo de la maacutequina

Registros de control y de estado Varios registros se emplean para controlar las operaciones del procesador En la mayoriacutea de las maacutequinas la mayor parte de estos registros no son visibles para los usuarios Algunos de ellos pueden estar accesibles a las instrucciones de maacutequina ejecutadas en un modo de control o modo del sistemaPor supuesto maacutequinas diferentes tendraacuten organizaciones diferentes de registros y podraacuten usar terminologiacuteas distintas

Ademaacutes de los registros MAR MBR IOAR y IOBR mencionados anteriormente los siguientes registros son esenciales en la ejecucioacuten de instrucciones Contador de programa (PC Program Counter) Contiene la direccioacuten de la instruccioacuten a ser leiacuteda Registro de instruccioacuten (IR Instruction Regiacutester) Contiene la uacuteltima instruccioacuten leiacuteda Todos los disentildeos de procesadores

incluyen ademaacutes un registro o conjunto de registros conocidos a menudo como palabra de estado del programa (PSW Program Status Word) que contiene informacioacuten de estado Normalmente la PSW contiene coacutedigos de condicioacuten junto a otra informacioacuten de estado Entre los campos e indicadores maacutes comunes se incluyen los siguientes

Signo Contiene el bit del signo de la uacuteltima operacioacuten aritmeacutetica efectuada Cero Se activa cuando el resultado de una operacioacuten aritmeacutetica es cero

Acarreo Se activa cuando como resultado de una suma o una resta se produce un acarreo maacutes allaacute del bit maacutes significativo Se utiliza en operaciones aritmeacuteticas de maacutes de una palabra

Igualdad Se activa si una comparacioacuten loacutegica da como resultado la igualdad Desbordamiento Empleado para sentildealar un desbordamiento aritmeacutetico Habilitarinhahilitar interrupcioacutenes Empleado para habilitar o inhabilitar interrupciones Cuando Las interrupciones estaacuten

inhabilitadas el procesador las ignora Esto es muy deseable cuando el sistema operativo estaacute ocupado en el tratamiento de otra interrupcioacuten

Supervisor Indica si el procesador estaacute ejecutando en modo supervisor o en modo usuario Ciertas instrucciones privilegiadas soacutelo se pueden ejecutar en modo supervisor y soacutelo se puede tener acceso a ciertas aacutereas de memoria en modo supervisor

En el disentildeo de un procesador especiacutefico se pueden encontrar una serie de registros relacionados con el estado y el control Ademaacutes de la PSW puede haber un puntero a un bloque de memoria que contenga informacioacuten de estado adicional En maacutequinas que utilizan varios tipos de interrupcioacuten se puede ofrecer una serie de registros con punteros a cada rutina de tratamiento de interrupcioacuten Si se utiliza una pila para implementar ciertas funciones (por ejemplo las llamadas a procedimientos) entonces se necesita un puntero a la pila Por uacuteltimo los registros tambieacuten pueden utilizarse para el control de las operaciones de ES Una serie de factores inciden en el disentildeo de la organizacioacuten de los registros de control y estado Un punto clave es el soporte del sistema operativo Cierto tipo de informacioacuten de control es de utilidad especiacutefica para el sistema operativo Si el disentildeador del procesador dispone de una visioacuten funcional del sistema operativo la organizacioacuten de los registros puede adaptarse convenientementeOtra decisioacuten clave del disentildeo es la asignacioacuten de informacioacuten de control a los registros y la memoria Es habitual dedicar los primeros centenares o miles de palabras (las maacutes bajas) de memoria para el control El disentildeador debe decidir la cantidad de informacioacuten de control que debe residir en los raacutepidos y costosos registros junto a la cantidad que debe permanecer en memoria principal que es maacutes lenta y barata

httpslamiradelsniperwordpresscom20120820registros-del-procesador

1 Los registros

El procesador necesita para su funcionamiento de ciertas aacutereas de almacenamiento que aquiacute se llaman registros y que son de dimensiones miacutenimas [3] sin embargo tienen la ventaja de su rapidez Comparados con los accesos a RAM los de registro son como miacutenimo 10 veces maacutes veloces

El 8088 dispone de catorce registros de 16 bits que se agrupan en cuatro grupos y que reciben nombres especiales (precisamente los que se utilizan para designarlos en lenguaje ensamblador)

sect311 Registros de uso general

Existen 4 registros denominados AX BX CX y DX que en realidad tienen asignados usos caracteriacutesticos aunque pueden ser utilizados a discrecioacuten para cualquier cosa que necesitemos

AX es denominado acumulador suele contener uno de los operandos que intervienen en las operaciones aritmeacuteticas y loacutegicas y despueacutes de esta el resultado de la operacioacuten En general

las instrucciones que trabajan con este registro (o su mitad inferior) tienen un microcoacutedigo maacutes simple que la misma instruccioacuten ejecutada con otro registro

BX es el registro base suele contener la direccioacuten de inicio de una tabla de valores

CX es denominado contador Las instrucciones de bucle (LOOP) utilizan este registro como contador

DX es un registro de datos multiuso Se utiliza en operaciones de multiplicacioacuten y divisioacuten junto con AX En operaciones de entradasalida de puertos INOUT su mitad inferior DL contiene el

nuacutemero de puerto ( 25)

Aunque estos cuatro registros son de 16 bits (como los 10 restantes) [6] en caso necesario pueden ser utilizados en dos mitades (nibbles) High y Low de 8 bits con lo que puede considerarse que existen 12 registros de uso general (no simultaacuteneos) los anteriores y sus mitades AH AL BH BL CH CL DH y DL

sect312 Registros de segmento

Se dispone de cuatro registros que sirven para contener las direcciones de otros tantos segmentos (zonas de 64 KB de memoria) Utilizaacutendolos en conjuncioacuten con otros registros que sentildealan las

direcciones concretas dentro de estos segmentos (los desplazamientos ) permiten manejar la totalidad de la memoria direccionable (el bus de direcciones es de 20 bits) Ver al respecto el epiacutegrafe

Direccionamiento segmentado ( 51)

Segmento de coacutedigo CS (Code segment) Sentildeala la direccioacuten del segmento de coacutedigo del

programa que se estaacute ejecutando ( E132) Segmento de datos DS (Data segment) Sentildeala la direccioacuten del segmento de datos del

programa en ejecucioacuten ( E132) Segmento de pila SS (Stack segment) Sentildeala la direccioacuten del segmento donde estaacute la pila

del programa ( E132) Segmento extra ES (Extra segment) Es un segmento auxiliar a los anteriores se utiliza para

sentildealar espacio extra en alguno de los segmentos o para almacenar momentaacuteneamente direcciones intermedias

Nota Puede ocurrir que programas pequentildeos utilicen el mismo segmento para el coacutedigo los datos y la pila

sect313 Registros de puntero

Son 5 registros destinados a contener direcciones estas direcciones son desplazamientos dentro de los

segmentos indicados por los registros de segmento (ver figura 51 Fig2)

El primero denominado indistintamente puntero de instruccioacuten IP (Instruccioacuten pointer) y contador de programa PC(Program counter) indica el desplazamiento (dentro del segmento de coacutedigo CS) de la proacutexima instruccioacuten a ejecutar

El puntero de pila SP (Stack Pointer) sentildeala el desplazamiento del final de la pila dentro del segmento de pila SS En caso necesario la pila puede crecer a partir de este punto de forma que por ejemplo una nueva invocacioacuten de funcioacuten crearaacute un nuevo registro de activacioacuten que comenzaraacute en este punto

El puntero base BP (Base pointer) sentildeala el desplazamiento (dentro del segmento de pila SS) donde se encuentra el origen de la zona ocupada por las variables dinaacutemicas

Existen dos registros denominados de iacutendice en razoacuten de su utilizacioacuten muy particular el iacutendice fuente SI (Source index) y el iacutendice destino DI (Destination index) Generalmente estos dos registros se utilizan con alguno de los registros de uso general y con ciertas

instrucciones especiacuteficamente pensadas para transferir datos (dentro de un rango de posiciones de memoria) desde un punto inicial de un segmento de datos a otro

Ver en la paacutegina adjunta un ejemplo relativo al uso de punteros ( 32 Ejemplo-2)

sect314 Registro de estado

Existe un registro especial el registro de estado (FLAGS) en el que 9 de los 18 bits actuacutean como semaacuteforos (indicadores del estado del procesador y del resultado de determinadas operaciones) Por ejemplo si despueacutes de una suma aritmeacutetica hay o no desbordamiento del bit maacutes significativo

Los nombres y situacioacuten de cada uno dentro de la palabra de 16 bits se muestran en la figura 2

Cada bits individual puede estar activo (1) o inactivo (0) y tiene un identificador que termina en F(Flag) Son los siguientes

Bit Indicador de Uso

CF Acarreo (Carry Flag)

Indicador de arrastre del bit de mayor orden que puede ocurrir en las operaciones aritmeacuteticas suma y resta

PF Paridad (Parity Flag)

Si estaacute activo Indica un nuacutemero par de bits activos (bits cuyo contenido es 1) Esta informacioacuten es uacutetil cuando el procesador controla transmisiones de datos

AF Acarreo auxiliar Indicador de ajuste en operaciones aritmeacuteticas con cantidades

BCD ( E01w1)

ZF Cero (Zero Flag) Estaacute activo si el resultado de operacioacuten es cero o resultado de comparacioacuten igual

SF Signo (Sign Flag) Si estaacute activo indica que el resultado de operacioacuten o de comparacioacuten son negativos [5]

TF Detencioacuten (Trap Flag)

Si estaacute activo el procesador genera automaacuteticamente una interrupcioacuten despueacutes de la ejecucioacuten de cada instruccioacuten lo que permite controlar paso a paso la ejecucioacuten del programa Este bit debe estar normalmente inactivo (a 0)

IF Interrupcioacuten (Interrupt Flag)

Este bit controla el estado del sistema de interrupciones

enmascarables ( 24) Cuando estaacute activo (1) permite las

interrupciones el estado inactivo (0) las deshabilita

DF Direccioacuten (Direction Flag)

Indica la direccioacuten de las operaciones

OF Desbordamiento (Overflow Flag)

Sentildeala desbordamiento aritmeacutetico

Nota Los usuarios de MS-DOS o Windows puede usar el programa DEBUG ( 171) para inspeccionar y modificar el contenido de los registros de la siguiente forma

Invocar DEBUG desde una ventana DOS (suponemos que estamos en Windows el prompt es un guioacuten -)

introducir el comando R (pedimos que nos muestre el contenido de los registros)

Salir de Debug con Q

En mi PC la respuesta al comando tiene el siguiente aspecto

AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=1779 ES=1779 SS=1779 CS=1779 IP=0100 NV UP EI PL NZ NA PO NC

Los valores estaacuten expresados en hexadecimal La uacuteltima secuencia de caracteres (NV UP EI PL NZ NA PO NC) muestra el contenido del registro de estado (el bit TF de detencioacuten no se muestra) el significado de la notacioacuten utilizada es el siguiente

Bit Indicador de Indicativo si bit 1 Indicativo si bit 0

CF Acarreo CY (Carry yes) NC (No Carry)

PF Paridad PE (Parity Even) paridad par PO (Parity Odd) paridad impar

AF Acarreo auxiliar AC (Auxiliar Carry) NA (No Auxiliar)

ZF Cero ZR (Zero) NZ (No Zero)

SF Signo NG (Negative) negativo PL (Plus) positivo

IF Interrupcioacuten EI (Enabled Interrupt) activa DI (Disabled Interrupt) desactivada

DF Direccioacuten DN (Down) decremento UP incremento

OF Desbordamiento OV (Overflow) NV (No overflow)

Tambieacuten es posible inspeccionar el contenido de un solo registro antildeadiendo al comando R el nombre del registro Por ejemplo el comando R IP muestra el contenido del contador de programa Los nombres que pueden utilizarse para los registros son los siguientes AX BX CX DX SP BP SI DI DS ES SS CS IP y F (este uacuteltimo para el registro de estado)

Despueacutes de un comando de este tipo DEBUG responde con un prompt distinto del habitual para indicar que debe introducir el nuevo valor que desea para el registro Pulsando INTRO se vuelve al modo normal

sect315 Comentario

Observe que tanto el registro contador de programa IP como el de base BP siempre contienen direcciones de memoria (los otros pueden contener direcciones o datos) Ni los registros de segmento ni los de puntero se pueden dividir en mitades (como los de uso general)

httpwwwzatorcomHardwareH3_2htm

Definiciones de registros Definicioacuten 1 un registro es una memoria de alta velocidad y poca capacidad integrada en el microprocesador que permite guardar transitoriamente y acceder a valores muy usados generalmente en operaciones matemaacuteticas Definicioacuten 2 un registro es una porcioacuten de memoria ultrarraacutepida de poca capacidad e integrado al microprocesador que permite almacenar y acceder datos usados frecuentemente Se emplean para aumentar la velocidad de ejecucioacuten de los programas

3 Funcioacuten de los registros Los registros estaacuten en la cumbre de la jerarquiacutea de memoria y son la manera maacutes raacutepida que tiene el sistema de almacenar datos Los registros se miden generalmente por el nuacutemero de bits que almacenan por ejemplo un registro de 8 bits o un registro de 32 bitsldquo La CPU contiene un conjunto de localidades de almacenamiento temporal de datos de alta velocidad llamada registro Algunos de los registros estaacuten dedicados al control y solo la unidad de control tiene acceso a ellos Los registros restantes son los registros de uso general y el programador es el usuario que tiene acceso a ellos

4 Los nombres de los registros describen la forma como algunas instrucciones enensamblador las emplean

5 Algunos registros basicos Dentro del conjunto baacutesico de registros de control se deben incluir a los siguientesa middot Contador de programa (PC)b middot Registro de direcciones de la memoria (MAR)c middot Registro de datos (RD)d middot Registro de instrucciones (IR)e middot Palabra de estado de programa (PSW)

6 Funcioacuten del PC La funcioacuten del PC consiste en seguir la pista de la instruccioacuten por buscar (capturar) en el siguiente ciclo de maquina por lo tanto contiene la direccioacuten de la siguiente instruccioacuten por ejecutar El PC es modificado dentro del ciclo de buacutesqueda de la instruccioacuten actual mediante la suma de una constante El numero que se agrega al PC es la longitud de una instruccioacuten en palabras Por lo tanto si una instruccioacuten tiene una palabra de longitud se agrega 1 al PC si una instruccioacuten tiene dos palabras de largo se agrega 2 y asiacute sucesivamente

7 Funcioacuten de MAR Registro de direcciones de la memoria (MAR) funciona como registro de enlace entre la CPU y el canal de direcciones Cuando se logra el acceso a la memoria la direccioacuten es colocada en el MAR por la unidad de control y ahiacute permanece hasta que se completa la transaccioacuten El numero de bit que hay en el MAR es igual al del canal de direcciones La diferencia que existe entre el PC y el MAR es que durante el ciclo de ejecucioacuten de una instruccioacuten el PC y el MAR sirven al mismo fin Sin embargo muchas de las instrucciones de la maquina hacen referencia a la memoria y operan con los datos que

estaacuten en ella Como la direccioacuten de los datos suele ser diferente de la instruccioacuten siguiente se necesita el MAR

8 Funcioacuten de RD Registro de datos la funcioacuten del RD consiste en proporcionar un aacuterea de almacenamiento temporal (memoria intermedia acumulada o buffer) de datos que se intercambian entre la PCU y la memoria Los datos pueden ser instrucciones (obtenidos en el ciclo de ejecucioacuten) o datos del operando (obtenidos en el ciclo de ejecucioacuten) Debido a su conexioacuten directa con el canal de datos el RD contiene el mismo numero de bit que dicho canal

9 Funcioacuten de IR Registro de instrucciones (IR) es un registro que conserva el coacutedigo de operacioacuten de la instruccioacuten en todo el ciclo de la maquina El coacutedigo es empleado por la unidad de control de la CPU para generar las sentildeales apropiadas que controla le ejecucioacuten de la instruccioacuten La longitud del ER es la longitud en bit del coacutedigo de operacioacuten

10 Funcioacuten de PSW Palabra de estado de programa (PSW) la palabra de estado o condicioacuten de programa almacena informacioacuten pertinente sobre el programa que este ejecutaacutendose Por ejemplo al completarse una funcioacuten de la unidad aritmeacutetica loacutegica se modifica un conjunto de bit llamados coacutedigos (o sentildeales de condicioacuten) Estos bit especifican si el resultado de una operacioacuten aritmeacutetica fue 0 o negativo o si el resultado se desbordoacute Ademaacutes el PSW contiene bit que hacen posible que la computadora responda a solicitudes de servicio asincroacutenicas generadas por dispositivos de Entrada-Salida o condiciones de error interno Estas sentildeales se denominan interrupciones

  • 1 Los registros
  • sect311 Registros de uso general
  • sect312 Registros de segmento
  • sect313 Registros de puntero
  • sect314 Registro de estado
  • sect315 Comentario
Page 6: Registros de procesador.docx

Registro SI El registro iacutendice fuente de 16 bits es requerido por algunas operaciones con cadenas (de caracteres) En este contexto el SI esta asociado con el registro DS Los procesadores 80386 y posteriores permiten el uso de un registro ampliado de 32 bits el ESIRegistro DI El registro iacutendice destino tambieacuten es requerido por algunas operaciones con cadenas de caracteres En este contexto el DI esta asociado con el registro ES Los procesadores 80386 y posteriores permiten el uso de un registro ampliado de 32 bits el EDI

Registro de Banderas De los 16 bits del registro de banderas nueve son comunes a toda la familia de procesadores 8086 y sirven para indicar el estado actual de la maquina y el resultado del procesamiento Muchas instrucciones que piden comparaciones y aritmeacutetica cambian el estado de las banderas algunas cuyas instrucciones pueden realizar pruebas para determinar la accioacuten subsecuente En resumen los bits de las banderas comunes son como sigue

OF (Overflow desbordamiento) Indica desbordamiento de un bitde orden alto (mas a la izquierda) despueacutes de una operacioacuten aritmeacuteticaDF (direccioacuten) Designa la direccioacuten hacia la izquierda o hacia la derecha para mover o comparar cadenas de caracteresIF (interrupcioacuten) Indica que una interrupcioacuten externa como la entrada desde el teclado sea procesada o ignoradaTF (trampa) Permite la operacioacuten del procesador en modo de un paso Los programas depuradores como el DEBUG activan esta bandera de manera que usted pueda avanzar en la ejecucioacuten de una sola instruccioacuten a un tiempo para examinar el efecto de esa instruccioacuten sobre los registros de memoriaSF (signo) Contiene el signo resultante de una operacioacuten aritmeacutetica (0 = positivo y 1 = negativo)ZF (cero) Indica el resultado de una operacioacuten aritmeacutetica o de comparacioacuten (0 = resultado diferente de cero y 1 = resultado igual a cero)AF (acarreo auxiliar) Contiene un acarreo externo del bit 3 en un dato de 8 bits para aritmeacutetica especializadaPF (paridad) Indica paridad par o impar de una operacioacuten en datos de 8 bits de bajo orden (mas a la derecha)CF (acarreo) Contiene el acarreo de orden mas alto (mas a la izquierda) despueacutes de una operacioacuten aritmeacutetica tambieacuten lleva el contenido del ultimo bit en una operacioacuten de corrimiento o de rotacioacuten Las banderas estaacuten en el registro de banderas en las siguientes posiciones

Las banderas mas importantes para la programacioacuten en ensamblador son O S Z y C para operaciones de comparacioacuten y aritmeacuteticas y D para operaciones de cadenas de caracteres Los procesadores 80286 y posteriores tienen algunas banderas usadas para propoacutesitos internos en especial las que afectan al modo protegido Los procesadores 80286 y posteriores tienen un registro extendido de banderas conocido como Eflags

Registros de PILA La pila es un aacuterea de memoria importante y por ello tiene en vez de uno dos registros que se usan como desplazamiento (offset) para apuntar a su contenido Se usan como complemento al registro y son

-SP- Stack Pointer Se traduce como puntero de pila y es el que se reserva el procesador para uso propio en instrucciones de manipulado de pila Por lo general el programador no debe alterar su contenido-BP- Base pointer Se usa como registro auxiliar El programador puede usarlo para su provechoClaro que estos nombres y tipos de registros son estaacutendar ya que cada fabricante puede utilizar otros registro que reemplacen a estos o los auxilien aun asiacute los fabricantes que usan otros registro tienen la misma funcioacuten que los anteriormente mencionados

Ejemplo Registros de uso general del 80868088 Tienen 16 bits cada uno y son ocho

1 AX = Registro acumulador dividido en AH y AL (8 bits cada uno) Usaacutendolo se produce (en general) una instruccioacuten que ocupa un byte menos que si se utilizaran otros registros de uso general Su parte maacutes baja AL tambieacuten tiene esta propiedad El uacuteltimo registro mencionado es el equivalente al acumulador de los procesadores anteriores (8080 y 8085) Ademaacutes hay instrucciones como DAA DAS AAA AAS AAM AAD LAHF SAHF CBW IN y OUT que trabajan con AX o con uno de sus dos bytes (AH o AL) Tambieacuten se utiliza este registro (junto con DX a veces) en multiplicaciones y divisiones

2 BX = Registro base dividido en BH y BL Es el registro base de propoacutesito similar (se usa para direccionamiento indirecto) y es una versioacuten maacutes potente del par de registros HL de los procesadores anteriores

3 CX = Registro contador dividido en CH y CL Se utiliza como contador en bucles (instruccioacuten LOOP) en operaciones con cadenas (usando el prefijo REP) y en desplazamientos y rotaciones (usando el registro CL en los dos uacuteltimos casos)

4 DX = Registro de datos dividido en DH y DL Se utiliza junto con el registro AX en multiplicaciones y divisiones en la instruccioacuten CWD y en IN y OUT para direccionamiento indirecto de puertos (el registro DX indica el nuacutemero de puerto de entradasalida)

5 SP = Puntero de pila (no se puede subdividir) Aunque es un registro de uso general debe utilizarse soacutelo como puntero de pila la cual sirve para almacenar las direcciones de retorno de subrutinas y los datos temporarios (mediante las instrucciones PUSH y POP) Al introducir (push) un valor en la pila a este registro se le resta dos mientras que al extraer (pop) un valor de la pila este a registro se le suma dos

6 BP = Puntero base (no se puede subdividir) Generalmente se utiliza para realizar direccionamiento indirecto dentro de la pila

7 SI = Puntero iacutendice (no se puede subdividir) Sirve como puntero fuente para las operaciones con cadenas Tambieacuten sirve para realizar direccionamiento indirecto

8 DI = Puntero destino (no se puede subdividir) Sirve como puntero destino para las operaciones con cadenas Tambieacuten sirve para realizar direccionamiento indirecto

Cualquiera de estos registros puede utilizarse como fuente o destino en operaciones aritmeacuteticas y loacutegicas

Indicadores (flags) Hay nueve indicadores de un bit en este registro de 16 bits Los cuatro bits maacutes significativos estaacuten indefinidos mientras que hay tres bits con valores determinados los bits 5 y 3 siempre valen cero y el bit 1 siempre vale uno (esto tambieacuten ocurriacutea en los procesadores anteriores)

CF (Carry Flag bit 0) Si vale 1 indica que hubo arrastre (en caso de suma) hacia o preacutestamo (en caso de resta) desde el bit de orden maacutes significativo del resultado Este indicador es usado por instrucciones que suman o restan nuacutemeros que ocupan varios bytes Las instrucciones de rotacioacuten pueden aislar un bit de la memoria o de un registro ponieacutendolo en el CFPF (Parity Flag bit 2) Si vale uno el resultado tiene paridad par es decir un nuacutemero par de bits a 1 Este indicador se puede utilizar para detectar errores en transmisionesAF (Auxiliary carry Flag bit 4) Si vale 1 indica que hubo arrastre o preacutestamo del nibble (cuatro bits) menos significativo al nibble maacutes significativo Este indicador se usa con las instrucciones de ajuste decimalZF (Zero Flag bit 6) Si este indicador vale 1 el resultado de la operacioacuten es cero SF (Sign Flag bit 7) Refleja el bit maacutes significativo del resultado Como los nuacutemeros negativos se representan en la notacioacuten de complemento a dos este bit representa el signo 0 si es positivo 1 si es negativoTF (Trap Flag bit 8) Si vale 1 el procesador estaacute en modo paso a paso En este modo la CPU automaacuteticamente genera una interrupcioacuten interna despueacutes de cada instruccioacuten permitiendo inspeccionar los resultados del programa a medida que se ejecuta instruccioacuten por instruccioacutenIF (Interrupt Flag bit 9) Si vale 1 la CPU reconoce pedidos de interrupcioacuten externas enmascarables (por el pin INTR) Si vale 0 no se reconocen tales interrupciones Las interrupciones no enmascarables y las internas siempre se reconocen independientemente del valor de IF DF (Direction Flag bit 10) Si vale 1 las instrucciones con cadenas sufriraacuten auto-decremento esto es se procesaraacuten las cadenas desde las direcciones maacutes altas de memoria hacia las maacutes bajas Si vale 0 habraacute auto-incremento lo que quiere decir que las cadenas se procesaraacuten de izquierda a derechaOF (Overflow flag bit 11) Si vale 1 hubo un desborde en una operacioacuten aritmeacutetica con signo esto es un diacutegito significativo se perdioacute debido a que tamantildeo del resultado es mayor que el tamantildeo del destino

El procesador Z80 Registros de propoacutesito general El Z80 posee 14 registros de propoacutesito general de 8 bits denominados A B C D H L y A B C D H L Solamente un set de siete registros y el correspondiente registro de Flags F pueden estar activos al mismo tiempo Una instruccioacuten especial selecciona A y F o A y F mientras que otra instruccioacuten selecciona B C D E H L o C D E H LEl programador puede cambiar raacutepidamente de un conjunto de registros de propoacutesito general a otro Esto proporciona una mayor capacidad de almacenamiento en registros El acceso a datos presentes en registros de la CPU es mucho maacutes raacutepido que el acceso a datos en memoriaLos registros pueden agruparse de a pares formando registros de 16 bits Estos son los pares BC DE y HL (sus equivalentes primas tambieacuten pueden agruparse)

Flags

Aunque los Flags existen fiacutesicamente dentro de la CPU estaacuten agrupados loacutegicamente formando un registro Los Flags del Z80 son los siguientes

Flag de Cero(Z) Toma el valor 1 si el resultado de una operacioacuten es cero Es el bit seis Flag de signo(S) Toma el valor 1 si el resultado de una operacioacuten es negativo Es el bit siete Flag de Carry(C) Este flag es afectado por las instrucciones de desplazamiento y es puesto en 1 oacute 0 seguacuten el valor del bit desplazado Tambieacuten es afectado por las operaciones aritmeacuteticas Este flag es el bit ceroFlag de Paridad y overflow(PV) En el caso de paridad se pone en 1 si el resultado de una operacioacuten posee un nuacutemero par de unos Cuando el flag PV se usa para representar overflow el flag se pone en 1 si ocurre un overflow despueacutes de una operacioacuten aritmeacutetica Este flag es el bit 2Flag H y N Son dos Flip Flop que no pueden ser examinados por las instrucciones de salto condicional El Z80 los usa para las operaciones BCD H representa el rebalse que genera considerando los cuatro bits menos significativos del resultado y N es el flag de resta el cual se activa para indicar si la uacuteltima instruccioacuten ejecutada fue suma o resta En el caso general una instruccioacuten de resta coloca en 1 el flag N y una instruccioacuten de suma lo coloca en 0 Los Flags H y N son los bits 4 y 1 respectivamente

Registros de propoacutesito especial Program Counter Es un registro de 16 bits que indica la direccioacuten de la proacutexima instruccioacuten ejecutar Las instrucciones del Z80 pueden contar de uno dos tres o cuatro bytes

Stack-Pointer Es un registro de 16 bits que indica la direccioacuten de una memoria RAM externa denominada Stack El objetivo de esta aacuterea de memoria es proporcionar un medio de almacenamiento temporal de los registros del usuario registro de Flags y del program Counter La provisioacuten de Stack es fundamental para operaciones tales como los llamados a sub-rutinas e interrupcionesRegistros iacutendices IX e IY Estos registros son de 16 bits disentildeados para permitir un direccionamiento indexado en los programas del Z80 Cuando se ejecuta una instruccioacuten en un modo de direccionamiento indexado se usa uno de los dos registros iacutendices para calcular la direccioacuten del operandoRegistro de interrupciones I Es un registro de 8 bits que puede ser cargado para especificar el byte maacutes significativo de una direccioacuten de memoria El byte menos significativo es proporcionado por el dispositivo que solicita la interrupcioacutenRegistro de refresh de memoria R Es un registro especial disentildeado para proporcionar un refresh automaacutetico de las memorias RAM dinaacutemicas Registro de instrucciones El registro de instrucciones tiene por misioacuten almacenar el coacutedigo de operacioacuten de la instruccioacuten leiacuteda desde memoria Este coacutedigo es descodificado y con esta informacioacuten se dirigen todos los micro-pasos httpwwwoocitiesorgmxantrahxgdocumentosorg_compregistrohtml

Registros del procesadorDentro del procesador hay un conjunto de registros que ofrecen un nivel de memoria que es maacutes raacutepido y pequentildeo que la memoria principal Los registros del procesador sirven para dos funciones Registros visibles de usuario Un programador de lenguaje de maacutequina o ensamblador puede minimizar las referencias a memoria principal mediante un uso oacuteptimo de estos registros Con lenguajes de alto nivel un compilador que optimice coacutedigo intentaraacute hacer una seleccioacuten inteligente de queacute variables asignar a registros y cuaacuteles a ubicaciones de la memoria principal Algunos lenguajes de alto nivel como C permiten que el programador indique al compilador queacute variables se deben almacenar en registros Registros de control y de estado Son utilizados por el procesador para el control de las operaciones o por rutinas privilegiadas del sistema operativo para controlar la ejecucioacuten de los programas No hay una separacioacuten clara de los registros en estas dos categoriacuteas Por ejemplo en algunas maacutequinas el contador de programa es visible para los usuarios pero en otras muchas no lo es Sin embargo para el propoacutesito de la discusioacuten que viene a continuacioacuten es conveniente emplear estas categoriacuteas Registros visibles de usuario Un registro visible de usuario es aqueacutel que puede ser referenciado por medio del lenguaje de maacutequina que ejecuta el procesador y es por lo general accesible para todos los programas incluyendo tanto los programas de aplicacioacuten como los del

sistema Las clases de registro que normalmente estaacuten disponibles son los registros de datos los registros de direccioacuten y los registros de coacutedigos de condicioacuten

Los registros de datosPueden ser asignados por el programador a diversas funciones En algunos casos son de propoacutesito general y pueden ser empleados por cualquier instruccioacuten de maacutequina que lleve a cabo operaciones sobre los datos Sin embargo suelen ponerse ciertas restricciones a menudo Por ejemplo puede haber registros dedicados a operaciones en coma flotante

Los registros de direccioacutenContienen direcciones en la memoria principal de datos e instrucciones o una parte de la direccioacuten que se utiliza en el caacutelculo de la direccioacuten completa Estos registros pueden ser de propoacutesito general o pueden estar dedicados a un modo especiacutefico de direccionamiento Entre los ejemplos se incluyen

Registro iacutendice El direccionamiento indexado es un modo comuacuten de direccionamiento que implica sumar un iacutendice a un valor base para obtener la direccioacuten efectiva

Puntero de segmento Con direccionamiento segmentado la memoria se divide en segmentos que son bloques de palabras de tamantildeo variable Una referencia a memoria consta de una referencia a un segmento particular y un desplazamiento dentro del segmento En este modo se utiliza un registro que alberga una direccioacuten base (ubicacioacuten inicial) de un segmento Puede haber varios registros de este tipo por ejemplo uno para el sistema operativo (es decir cuando se ejecuta coacutedigo del sistema operativo en el procesador) y otro para la aplicacioacuten que estaacute en ejecucioacuten

Puntero de pila Si hay un direccionamiento de pila visible para los usuarios la pila estaraacute por lo general en la memoria principal existiendo un registro dedicado a sentildealar la cima de la pila

Esto permite el uso de instrucciones que no contienen ninguacuten campo de direccioacuten tales como push (poner) y pop (sacar) Una uacuteltima categoriacutea de registros que son al menos parcialmente visibles para los usuarios son aquellos que contienen coacutedigos de condicioacuten (tambieacuten denominados indicadores o flags) Los coacutedigos de condicioacuten son bits activados por el hardware del procesador como resultado de determinadas operaciones

Por ejemplo una operacioacuten aritmeacutetica puede producir un resultado positivo negativo cero o desbordamiento Ademaacutes de almacenar el resultado de esta operacioacuten en un registro o en memoria tambieacuten se activaraacute un coacutedigo de condicioacuten Este coacutedigo puede consultarse posteriormente como parte de una operacioacuten de salto condicional

Los bits de coacutedigo de condicioacuten se agrupan en uno o maacutes registros Estos forman generalmente parte de un registro de control En general las instrucciones de maacutequina permiten leer estos bits mediante referencias impliacutecitas pero no pueden ser alterados por el programador

En algunas maacutequinas una llamada a un procedimiento o subrutina provocaraacute que los registros visibles de usuario se salven automaacuteticamente para luego restaurarlos al retomar Este proceso de salvar y restaurar lo lleva a cabo el procesador como parte de la ejecucioacuten de las instrucciones de llamada y retomo Esto permite que cada procedimiento pueda usar los registros de forma independiente En otras maacutequinas es responsabilidad del programador salvar los contenidos de los registros de usuario visibles que sean relevantes antes de hacer la llamada a un procedimiento incluyendo instrucciones en el programa con tal propoacutesito Asiacute pues las instrucciones de salvar y restaurar pueden ser llevadas a cabo por el hardware o por el software dependiendo de la maacutequina

Registros de control y de estado Varios registros se emplean para controlar las operaciones del procesador En la mayoriacutea de las maacutequinas la mayor parte de estos registros no son visibles para los usuarios Algunos de ellos pueden estar accesibles a las instrucciones de maacutequina ejecutadas en un modo de control o modo del sistemaPor supuesto maacutequinas diferentes tendraacuten organizaciones diferentes de registros y podraacuten usar terminologiacuteas distintas

Ademaacutes de los registros MAR MBR IOAR y IOBR mencionados anteriormente los siguientes registros son esenciales en la ejecucioacuten de instrucciones Contador de programa (PC Program Counter) Contiene la direccioacuten de la instruccioacuten a ser leiacuteda Registro de instruccioacuten (IR Instruction Regiacutester) Contiene la uacuteltima instruccioacuten leiacuteda Todos los disentildeos de procesadores

incluyen ademaacutes un registro o conjunto de registros conocidos a menudo como palabra de estado del programa (PSW Program Status Word) que contiene informacioacuten de estado Normalmente la PSW contiene coacutedigos de condicioacuten junto a otra informacioacuten de estado Entre los campos e indicadores maacutes comunes se incluyen los siguientes

Signo Contiene el bit del signo de la uacuteltima operacioacuten aritmeacutetica efectuada Cero Se activa cuando el resultado de una operacioacuten aritmeacutetica es cero

Acarreo Se activa cuando como resultado de una suma o una resta se produce un acarreo maacutes allaacute del bit maacutes significativo Se utiliza en operaciones aritmeacuteticas de maacutes de una palabra

Igualdad Se activa si una comparacioacuten loacutegica da como resultado la igualdad Desbordamiento Empleado para sentildealar un desbordamiento aritmeacutetico Habilitarinhahilitar interrupcioacutenes Empleado para habilitar o inhabilitar interrupciones Cuando Las interrupciones estaacuten

inhabilitadas el procesador las ignora Esto es muy deseable cuando el sistema operativo estaacute ocupado en el tratamiento de otra interrupcioacuten

Supervisor Indica si el procesador estaacute ejecutando en modo supervisor o en modo usuario Ciertas instrucciones privilegiadas soacutelo se pueden ejecutar en modo supervisor y soacutelo se puede tener acceso a ciertas aacutereas de memoria en modo supervisor

En el disentildeo de un procesador especiacutefico se pueden encontrar una serie de registros relacionados con el estado y el control Ademaacutes de la PSW puede haber un puntero a un bloque de memoria que contenga informacioacuten de estado adicional En maacutequinas que utilizan varios tipos de interrupcioacuten se puede ofrecer una serie de registros con punteros a cada rutina de tratamiento de interrupcioacuten Si se utiliza una pila para implementar ciertas funciones (por ejemplo las llamadas a procedimientos) entonces se necesita un puntero a la pila Por uacuteltimo los registros tambieacuten pueden utilizarse para el control de las operaciones de ES Una serie de factores inciden en el disentildeo de la organizacioacuten de los registros de control y estado Un punto clave es el soporte del sistema operativo Cierto tipo de informacioacuten de control es de utilidad especiacutefica para el sistema operativo Si el disentildeador del procesador dispone de una visioacuten funcional del sistema operativo la organizacioacuten de los registros puede adaptarse convenientementeOtra decisioacuten clave del disentildeo es la asignacioacuten de informacioacuten de control a los registros y la memoria Es habitual dedicar los primeros centenares o miles de palabras (las maacutes bajas) de memoria para el control El disentildeador debe decidir la cantidad de informacioacuten de control que debe residir en los raacutepidos y costosos registros junto a la cantidad que debe permanecer en memoria principal que es maacutes lenta y barata

httpslamiradelsniperwordpresscom20120820registros-del-procesador

1 Los registros

El procesador necesita para su funcionamiento de ciertas aacutereas de almacenamiento que aquiacute se llaman registros y que son de dimensiones miacutenimas [3] sin embargo tienen la ventaja de su rapidez Comparados con los accesos a RAM los de registro son como miacutenimo 10 veces maacutes veloces

El 8088 dispone de catorce registros de 16 bits que se agrupan en cuatro grupos y que reciben nombres especiales (precisamente los que se utilizan para designarlos en lenguaje ensamblador)

sect311 Registros de uso general

Existen 4 registros denominados AX BX CX y DX que en realidad tienen asignados usos caracteriacutesticos aunque pueden ser utilizados a discrecioacuten para cualquier cosa que necesitemos

AX es denominado acumulador suele contener uno de los operandos que intervienen en las operaciones aritmeacuteticas y loacutegicas y despueacutes de esta el resultado de la operacioacuten En general

las instrucciones que trabajan con este registro (o su mitad inferior) tienen un microcoacutedigo maacutes simple que la misma instruccioacuten ejecutada con otro registro

BX es el registro base suele contener la direccioacuten de inicio de una tabla de valores

CX es denominado contador Las instrucciones de bucle (LOOP) utilizan este registro como contador

DX es un registro de datos multiuso Se utiliza en operaciones de multiplicacioacuten y divisioacuten junto con AX En operaciones de entradasalida de puertos INOUT su mitad inferior DL contiene el

nuacutemero de puerto ( 25)

Aunque estos cuatro registros son de 16 bits (como los 10 restantes) [6] en caso necesario pueden ser utilizados en dos mitades (nibbles) High y Low de 8 bits con lo que puede considerarse que existen 12 registros de uso general (no simultaacuteneos) los anteriores y sus mitades AH AL BH BL CH CL DH y DL

sect312 Registros de segmento

Se dispone de cuatro registros que sirven para contener las direcciones de otros tantos segmentos (zonas de 64 KB de memoria) Utilizaacutendolos en conjuncioacuten con otros registros que sentildealan las

direcciones concretas dentro de estos segmentos (los desplazamientos ) permiten manejar la totalidad de la memoria direccionable (el bus de direcciones es de 20 bits) Ver al respecto el epiacutegrafe

Direccionamiento segmentado ( 51)

Segmento de coacutedigo CS (Code segment) Sentildeala la direccioacuten del segmento de coacutedigo del

programa que se estaacute ejecutando ( E132) Segmento de datos DS (Data segment) Sentildeala la direccioacuten del segmento de datos del

programa en ejecucioacuten ( E132) Segmento de pila SS (Stack segment) Sentildeala la direccioacuten del segmento donde estaacute la pila

del programa ( E132) Segmento extra ES (Extra segment) Es un segmento auxiliar a los anteriores se utiliza para

sentildealar espacio extra en alguno de los segmentos o para almacenar momentaacuteneamente direcciones intermedias

Nota Puede ocurrir que programas pequentildeos utilicen el mismo segmento para el coacutedigo los datos y la pila

sect313 Registros de puntero

Son 5 registros destinados a contener direcciones estas direcciones son desplazamientos dentro de los

segmentos indicados por los registros de segmento (ver figura 51 Fig2)

El primero denominado indistintamente puntero de instruccioacuten IP (Instruccioacuten pointer) y contador de programa PC(Program counter) indica el desplazamiento (dentro del segmento de coacutedigo CS) de la proacutexima instruccioacuten a ejecutar

El puntero de pila SP (Stack Pointer) sentildeala el desplazamiento del final de la pila dentro del segmento de pila SS En caso necesario la pila puede crecer a partir de este punto de forma que por ejemplo una nueva invocacioacuten de funcioacuten crearaacute un nuevo registro de activacioacuten que comenzaraacute en este punto

El puntero base BP (Base pointer) sentildeala el desplazamiento (dentro del segmento de pila SS) donde se encuentra el origen de la zona ocupada por las variables dinaacutemicas

Existen dos registros denominados de iacutendice en razoacuten de su utilizacioacuten muy particular el iacutendice fuente SI (Source index) y el iacutendice destino DI (Destination index) Generalmente estos dos registros se utilizan con alguno de los registros de uso general y con ciertas

instrucciones especiacuteficamente pensadas para transferir datos (dentro de un rango de posiciones de memoria) desde un punto inicial de un segmento de datos a otro

Ver en la paacutegina adjunta un ejemplo relativo al uso de punteros ( 32 Ejemplo-2)

sect314 Registro de estado

Existe un registro especial el registro de estado (FLAGS) en el que 9 de los 18 bits actuacutean como semaacuteforos (indicadores del estado del procesador y del resultado de determinadas operaciones) Por ejemplo si despueacutes de una suma aritmeacutetica hay o no desbordamiento del bit maacutes significativo

Los nombres y situacioacuten de cada uno dentro de la palabra de 16 bits se muestran en la figura 2

Cada bits individual puede estar activo (1) o inactivo (0) y tiene un identificador que termina en F(Flag) Son los siguientes

Bit Indicador de Uso

CF Acarreo (Carry Flag)

Indicador de arrastre del bit de mayor orden que puede ocurrir en las operaciones aritmeacuteticas suma y resta

PF Paridad (Parity Flag)

Si estaacute activo Indica un nuacutemero par de bits activos (bits cuyo contenido es 1) Esta informacioacuten es uacutetil cuando el procesador controla transmisiones de datos

AF Acarreo auxiliar Indicador de ajuste en operaciones aritmeacuteticas con cantidades

BCD ( E01w1)

ZF Cero (Zero Flag) Estaacute activo si el resultado de operacioacuten es cero o resultado de comparacioacuten igual

SF Signo (Sign Flag) Si estaacute activo indica que el resultado de operacioacuten o de comparacioacuten son negativos [5]

TF Detencioacuten (Trap Flag)

Si estaacute activo el procesador genera automaacuteticamente una interrupcioacuten despueacutes de la ejecucioacuten de cada instruccioacuten lo que permite controlar paso a paso la ejecucioacuten del programa Este bit debe estar normalmente inactivo (a 0)

IF Interrupcioacuten (Interrupt Flag)

Este bit controla el estado del sistema de interrupciones

enmascarables ( 24) Cuando estaacute activo (1) permite las

interrupciones el estado inactivo (0) las deshabilita

DF Direccioacuten (Direction Flag)

Indica la direccioacuten de las operaciones

OF Desbordamiento (Overflow Flag)

Sentildeala desbordamiento aritmeacutetico

Nota Los usuarios de MS-DOS o Windows puede usar el programa DEBUG ( 171) para inspeccionar y modificar el contenido de los registros de la siguiente forma

Invocar DEBUG desde una ventana DOS (suponemos que estamos en Windows el prompt es un guioacuten -)

introducir el comando R (pedimos que nos muestre el contenido de los registros)

Salir de Debug con Q

En mi PC la respuesta al comando tiene el siguiente aspecto

AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=1779 ES=1779 SS=1779 CS=1779 IP=0100 NV UP EI PL NZ NA PO NC

Los valores estaacuten expresados en hexadecimal La uacuteltima secuencia de caracteres (NV UP EI PL NZ NA PO NC) muestra el contenido del registro de estado (el bit TF de detencioacuten no se muestra) el significado de la notacioacuten utilizada es el siguiente

Bit Indicador de Indicativo si bit 1 Indicativo si bit 0

CF Acarreo CY (Carry yes) NC (No Carry)

PF Paridad PE (Parity Even) paridad par PO (Parity Odd) paridad impar

AF Acarreo auxiliar AC (Auxiliar Carry) NA (No Auxiliar)

ZF Cero ZR (Zero) NZ (No Zero)

SF Signo NG (Negative) negativo PL (Plus) positivo

IF Interrupcioacuten EI (Enabled Interrupt) activa DI (Disabled Interrupt) desactivada

DF Direccioacuten DN (Down) decremento UP incremento

OF Desbordamiento OV (Overflow) NV (No overflow)

Tambieacuten es posible inspeccionar el contenido de un solo registro antildeadiendo al comando R el nombre del registro Por ejemplo el comando R IP muestra el contenido del contador de programa Los nombres que pueden utilizarse para los registros son los siguientes AX BX CX DX SP BP SI DI DS ES SS CS IP y F (este uacuteltimo para el registro de estado)

Despueacutes de un comando de este tipo DEBUG responde con un prompt distinto del habitual para indicar que debe introducir el nuevo valor que desea para el registro Pulsando INTRO se vuelve al modo normal

sect315 Comentario

Observe que tanto el registro contador de programa IP como el de base BP siempre contienen direcciones de memoria (los otros pueden contener direcciones o datos) Ni los registros de segmento ni los de puntero se pueden dividir en mitades (como los de uso general)

httpwwwzatorcomHardwareH3_2htm

Definiciones de registros Definicioacuten 1 un registro es una memoria de alta velocidad y poca capacidad integrada en el microprocesador que permite guardar transitoriamente y acceder a valores muy usados generalmente en operaciones matemaacuteticas Definicioacuten 2 un registro es una porcioacuten de memoria ultrarraacutepida de poca capacidad e integrado al microprocesador que permite almacenar y acceder datos usados frecuentemente Se emplean para aumentar la velocidad de ejecucioacuten de los programas

3 Funcioacuten de los registros Los registros estaacuten en la cumbre de la jerarquiacutea de memoria y son la manera maacutes raacutepida que tiene el sistema de almacenar datos Los registros se miden generalmente por el nuacutemero de bits que almacenan por ejemplo un registro de 8 bits o un registro de 32 bitsldquo La CPU contiene un conjunto de localidades de almacenamiento temporal de datos de alta velocidad llamada registro Algunos de los registros estaacuten dedicados al control y solo la unidad de control tiene acceso a ellos Los registros restantes son los registros de uso general y el programador es el usuario que tiene acceso a ellos

4 Los nombres de los registros describen la forma como algunas instrucciones enensamblador las emplean

5 Algunos registros basicos Dentro del conjunto baacutesico de registros de control se deben incluir a los siguientesa middot Contador de programa (PC)b middot Registro de direcciones de la memoria (MAR)c middot Registro de datos (RD)d middot Registro de instrucciones (IR)e middot Palabra de estado de programa (PSW)

6 Funcioacuten del PC La funcioacuten del PC consiste en seguir la pista de la instruccioacuten por buscar (capturar) en el siguiente ciclo de maquina por lo tanto contiene la direccioacuten de la siguiente instruccioacuten por ejecutar El PC es modificado dentro del ciclo de buacutesqueda de la instruccioacuten actual mediante la suma de una constante El numero que se agrega al PC es la longitud de una instruccioacuten en palabras Por lo tanto si una instruccioacuten tiene una palabra de longitud se agrega 1 al PC si una instruccioacuten tiene dos palabras de largo se agrega 2 y asiacute sucesivamente

7 Funcioacuten de MAR Registro de direcciones de la memoria (MAR) funciona como registro de enlace entre la CPU y el canal de direcciones Cuando se logra el acceso a la memoria la direccioacuten es colocada en el MAR por la unidad de control y ahiacute permanece hasta que se completa la transaccioacuten El numero de bit que hay en el MAR es igual al del canal de direcciones La diferencia que existe entre el PC y el MAR es que durante el ciclo de ejecucioacuten de una instruccioacuten el PC y el MAR sirven al mismo fin Sin embargo muchas de las instrucciones de la maquina hacen referencia a la memoria y operan con los datos que

estaacuten en ella Como la direccioacuten de los datos suele ser diferente de la instruccioacuten siguiente se necesita el MAR

8 Funcioacuten de RD Registro de datos la funcioacuten del RD consiste en proporcionar un aacuterea de almacenamiento temporal (memoria intermedia acumulada o buffer) de datos que se intercambian entre la PCU y la memoria Los datos pueden ser instrucciones (obtenidos en el ciclo de ejecucioacuten) o datos del operando (obtenidos en el ciclo de ejecucioacuten) Debido a su conexioacuten directa con el canal de datos el RD contiene el mismo numero de bit que dicho canal

9 Funcioacuten de IR Registro de instrucciones (IR) es un registro que conserva el coacutedigo de operacioacuten de la instruccioacuten en todo el ciclo de la maquina El coacutedigo es empleado por la unidad de control de la CPU para generar las sentildeales apropiadas que controla le ejecucioacuten de la instruccioacuten La longitud del ER es la longitud en bit del coacutedigo de operacioacuten

10 Funcioacuten de PSW Palabra de estado de programa (PSW) la palabra de estado o condicioacuten de programa almacena informacioacuten pertinente sobre el programa que este ejecutaacutendose Por ejemplo al completarse una funcioacuten de la unidad aritmeacutetica loacutegica se modifica un conjunto de bit llamados coacutedigos (o sentildeales de condicioacuten) Estos bit especifican si el resultado de una operacioacuten aritmeacutetica fue 0 o negativo o si el resultado se desbordoacute Ademaacutes el PSW contiene bit que hacen posible que la computadora responda a solicitudes de servicio asincroacutenicas generadas por dispositivos de Entrada-Salida o condiciones de error interno Estas sentildeales se denominan interrupciones

  • 1 Los registros
  • sect311 Registros de uso general
  • sect312 Registros de segmento
  • sect313 Registros de puntero
  • sect314 Registro de estado
  • sect315 Comentario
Page 7: Registros de procesador.docx

4 DX = Registro de datos dividido en DH y DL Se utiliza junto con el registro AX en multiplicaciones y divisiones en la instruccioacuten CWD y en IN y OUT para direccionamiento indirecto de puertos (el registro DX indica el nuacutemero de puerto de entradasalida)

5 SP = Puntero de pila (no se puede subdividir) Aunque es un registro de uso general debe utilizarse soacutelo como puntero de pila la cual sirve para almacenar las direcciones de retorno de subrutinas y los datos temporarios (mediante las instrucciones PUSH y POP) Al introducir (push) un valor en la pila a este registro se le resta dos mientras que al extraer (pop) un valor de la pila este a registro se le suma dos

6 BP = Puntero base (no se puede subdividir) Generalmente se utiliza para realizar direccionamiento indirecto dentro de la pila

7 SI = Puntero iacutendice (no se puede subdividir) Sirve como puntero fuente para las operaciones con cadenas Tambieacuten sirve para realizar direccionamiento indirecto

8 DI = Puntero destino (no se puede subdividir) Sirve como puntero destino para las operaciones con cadenas Tambieacuten sirve para realizar direccionamiento indirecto

Cualquiera de estos registros puede utilizarse como fuente o destino en operaciones aritmeacuteticas y loacutegicas

Indicadores (flags) Hay nueve indicadores de un bit en este registro de 16 bits Los cuatro bits maacutes significativos estaacuten indefinidos mientras que hay tres bits con valores determinados los bits 5 y 3 siempre valen cero y el bit 1 siempre vale uno (esto tambieacuten ocurriacutea en los procesadores anteriores)

CF (Carry Flag bit 0) Si vale 1 indica que hubo arrastre (en caso de suma) hacia o preacutestamo (en caso de resta) desde el bit de orden maacutes significativo del resultado Este indicador es usado por instrucciones que suman o restan nuacutemeros que ocupan varios bytes Las instrucciones de rotacioacuten pueden aislar un bit de la memoria o de un registro ponieacutendolo en el CFPF (Parity Flag bit 2) Si vale uno el resultado tiene paridad par es decir un nuacutemero par de bits a 1 Este indicador se puede utilizar para detectar errores en transmisionesAF (Auxiliary carry Flag bit 4) Si vale 1 indica que hubo arrastre o preacutestamo del nibble (cuatro bits) menos significativo al nibble maacutes significativo Este indicador se usa con las instrucciones de ajuste decimalZF (Zero Flag bit 6) Si este indicador vale 1 el resultado de la operacioacuten es cero SF (Sign Flag bit 7) Refleja el bit maacutes significativo del resultado Como los nuacutemeros negativos se representan en la notacioacuten de complemento a dos este bit representa el signo 0 si es positivo 1 si es negativoTF (Trap Flag bit 8) Si vale 1 el procesador estaacute en modo paso a paso En este modo la CPU automaacuteticamente genera una interrupcioacuten interna despueacutes de cada instruccioacuten permitiendo inspeccionar los resultados del programa a medida que se ejecuta instruccioacuten por instruccioacutenIF (Interrupt Flag bit 9) Si vale 1 la CPU reconoce pedidos de interrupcioacuten externas enmascarables (por el pin INTR) Si vale 0 no se reconocen tales interrupciones Las interrupciones no enmascarables y las internas siempre se reconocen independientemente del valor de IF DF (Direction Flag bit 10) Si vale 1 las instrucciones con cadenas sufriraacuten auto-decremento esto es se procesaraacuten las cadenas desde las direcciones maacutes altas de memoria hacia las maacutes bajas Si vale 0 habraacute auto-incremento lo que quiere decir que las cadenas se procesaraacuten de izquierda a derechaOF (Overflow flag bit 11) Si vale 1 hubo un desborde en una operacioacuten aritmeacutetica con signo esto es un diacutegito significativo se perdioacute debido a que tamantildeo del resultado es mayor que el tamantildeo del destino

El procesador Z80 Registros de propoacutesito general El Z80 posee 14 registros de propoacutesito general de 8 bits denominados A B C D H L y A B C D H L Solamente un set de siete registros y el correspondiente registro de Flags F pueden estar activos al mismo tiempo Una instruccioacuten especial selecciona A y F o A y F mientras que otra instruccioacuten selecciona B C D E H L o C D E H LEl programador puede cambiar raacutepidamente de un conjunto de registros de propoacutesito general a otro Esto proporciona una mayor capacidad de almacenamiento en registros El acceso a datos presentes en registros de la CPU es mucho maacutes raacutepido que el acceso a datos en memoriaLos registros pueden agruparse de a pares formando registros de 16 bits Estos son los pares BC DE y HL (sus equivalentes primas tambieacuten pueden agruparse)

Flags

Aunque los Flags existen fiacutesicamente dentro de la CPU estaacuten agrupados loacutegicamente formando un registro Los Flags del Z80 son los siguientes

Flag de Cero(Z) Toma el valor 1 si el resultado de una operacioacuten es cero Es el bit seis Flag de signo(S) Toma el valor 1 si el resultado de una operacioacuten es negativo Es el bit siete Flag de Carry(C) Este flag es afectado por las instrucciones de desplazamiento y es puesto en 1 oacute 0 seguacuten el valor del bit desplazado Tambieacuten es afectado por las operaciones aritmeacuteticas Este flag es el bit ceroFlag de Paridad y overflow(PV) En el caso de paridad se pone en 1 si el resultado de una operacioacuten posee un nuacutemero par de unos Cuando el flag PV se usa para representar overflow el flag se pone en 1 si ocurre un overflow despueacutes de una operacioacuten aritmeacutetica Este flag es el bit 2Flag H y N Son dos Flip Flop que no pueden ser examinados por las instrucciones de salto condicional El Z80 los usa para las operaciones BCD H representa el rebalse que genera considerando los cuatro bits menos significativos del resultado y N es el flag de resta el cual se activa para indicar si la uacuteltima instruccioacuten ejecutada fue suma o resta En el caso general una instruccioacuten de resta coloca en 1 el flag N y una instruccioacuten de suma lo coloca en 0 Los Flags H y N son los bits 4 y 1 respectivamente

Registros de propoacutesito especial Program Counter Es un registro de 16 bits que indica la direccioacuten de la proacutexima instruccioacuten ejecutar Las instrucciones del Z80 pueden contar de uno dos tres o cuatro bytes

Stack-Pointer Es un registro de 16 bits que indica la direccioacuten de una memoria RAM externa denominada Stack El objetivo de esta aacuterea de memoria es proporcionar un medio de almacenamiento temporal de los registros del usuario registro de Flags y del program Counter La provisioacuten de Stack es fundamental para operaciones tales como los llamados a sub-rutinas e interrupcionesRegistros iacutendices IX e IY Estos registros son de 16 bits disentildeados para permitir un direccionamiento indexado en los programas del Z80 Cuando se ejecuta una instruccioacuten en un modo de direccionamiento indexado se usa uno de los dos registros iacutendices para calcular la direccioacuten del operandoRegistro de interrupciones I Es un registro de 8 bits que puede ser cargado para especificar el byte maacutes significativo de una direccioacuten de memoria El byte menos significativo es proporcionado por el dispositivo que solicita la interrupcioacutenRegistro de refresh de memoria R Es un registro especial disentildeado para proporcionar un refresh automaacutetico de las memorias RAM dinaacutemicas Registro de instrucciones El registro de instrucciones tiene por misioacuten almacenar el coacutedigo de operacioacuten de la instruccioacuten leiacuteda desde memoria Este coacutedigo es descodificado y con esta informacioacuten se dirigen todos los micro-pasos httpwwwoocitiesorgmxantrahxgdocumentosorg_compregistrohtml

Registros del procesadorDentro del procesador hay un conjunto de registros que ofrecen un nivel de memoria que es maacutes raacutepido y pequentildeo que la memoria principal Los registros del procesador sirven para dos funciones Registros visibles de usuario Un programador de lenguaje de maacutequina o ensamblador puede minimizar las referencias a memoria principal mediante un uso oacuteptimo de estos registros Con lenguajes de alto nivel un compilador que optimice coacutedigo intentaraacute hacer una seleccioacuten inteligente de queacute variables asignar a registros y cuaacuteles a ubicaciones de la memoria principal Algunos lenguajes de alto nivel como C permiten que el programador indique al compilador queacute variables se deben almacenar en registros Registros de control y de estado Son utilizados por el procesador para el control de las operaciones o por rutinas privilegiadas del sistema operativo para controlar la ejecucioacuten de los programas No hay una separacioacuten clara de los registros en estas dos categoriacuteas Por ejemplo en algunas maacutequinas el contador de programa es visible para los usuarios pero en otras muchas no lo es Sin embargo para el propoacutesito de la discusioacuten que viene a continuacioacuten es conveniente emplear estas categoriacuteas Registros visibles de usuario Un registro visible de usuario es aqueacutel que puede ser referenciado por medio del lenguaje de maacutequina que ejecuta el procesador y es por lo general accesible para todos los programas incluyendo tanto los programas de aplicacioacuten como los del

sistema Las clases de registro que normalmente estaacuten disponibles son los registros de datos los registros de direccioacuten y los registros de coacutedigos de condicioacuten

Los registros de datosPueden ser asignados por el programador a diversas funciones En algunos casos son de propoacutesito general y pueden ser empleados por cualquier instruccioacuten de maacutequina que lleve a cabo operaciones sobre los datos Sin embargo suelen ponerse ciertas restricciones a menudo Por ejemplo puede haber registros dedicados a operaciones en coma flotante

Los registros de direccioacutenContienen direcciones en la memoria principal de datos e instrucciones o una parte de la direccioacuten que se utiliza en el caacutelculo de la direccioacuten completa Estos registros pueden ser de propoacutesito general o pueden estar dedicados a un modo especiacutefico de direccionamiento Entre los ejemplos se incluyen

Registro iacutendice El direccionamiento indexado es un modo comuacuten de direccionamiento que implica sumar un iacutendice a un valor base para obtener la direccioacuten efectiva

Puntero de segmento Con direccionamiento segmentado la memoria se divide en segmentos que son bloques de palabras de tamantildeo variable Una referencia a memoria consta de una referencia a un segmento particular y un desplazamiento dentro del segmento En este modo se utiliza un registro que alberga una direccioacuten base (ubicacioacuten inicial) de un segmento Puede haber varios registros de este tipo por ejemplo uno para el sistema operativo (es decir cuando se ejecuta coacutedigo del sistema operativo en el procesador) y otro para la aplicacioacuten que estaacute en ejecucioacuten

Puntero de pila Si hay un direccionamiento de pila visible para los usuarios la pila estaraacute por lo general en la memoria principal existiendo un registro dedicado a sentildealar la cima de la pila

Esto permite el uso de instrucciones que no contienen ninguacuten campo de direccioacuten tales como push (poner) y pop (sacar) Una uacuteltima categoriacutea de registros que son al menos parcialmente visibles para los usuarios son aquellos que contienen coacutedigos de condicioacuten (tambieacuten denominados indicadores o flags) Los coacutedigos de condicioacuten son bits activados por el hardware del procesador como resultado de determinadas operaciones

Por ejemplo una operacioacuten aritmeacutetica puede producir un resultado positivo negativo cero o desbordamiento Ademaacutes de almacenar el resultado de esta operacioacuten en un registro o en memoria tambieacuten se activaraacute un coacutedigo de condicioacuten Este coacutedigo puede consultarse posteriormente como parte de una operacioacuten de salto condicional

Los bits de coacutedigo de condicioacuten se agrupan en uno o maacutes registros Estos forman generalmente parte de un registro de control En general las instrucciones de maacutequina permiten leer estos bits mediante referencias impliacutecitas pero no pueden ser alterados por el programador

En algunas maacutequinas una llamada a un procedimiento o subrutina provocaraacute que los registros visibles de usuario se salven automaacuteticamente para luego restaurarlos al retomar Este proceso de salvar y restaurar lo lleva a cabo el procesador como parte de la ejecucioacuten de las instrucciones de llamada y retomo Esto permite que cada procedimiento pueda usar los registros de forma independiente En otras maacutequinas es responsabilidad del programador salvar los contenidos de los registros de usuario visibles que sean relevantes antes de hacer la llamada a un procedimiento incluyendo instrucciones en el programa con tal propoacutesito Asiacute pues las instrucciones de salvar y restaurar pueden ser llevadas a cabo por el hardware o por el software dependiendo de la maacutequina

Registros de control y de estado Varios registros se emplean para controlar las operaciones del procesador En la mayoriacutea de las maacutequinas la mayor parte de estos registros no son visibles para los usuarios Algunos de ellos pueden estar accesibles a las instrucciones de maacutequina ejecutadas en un modo de control o modo del sistemaPor supuesto maacutequinas diferentes tendraacuten organizaciones diferentes de registros y podraacuten usar terminologiacuteas distintas

Ademaacutes de los registros MAR MBR IOAR y IOBR mencionados anteriormente los siguientes registros son esenciales en la ejecucioacuten de instrucciones Contador de programa (PC Program Counter) Contiene la direccioacuten de la instruccioacuten a ser leiacuteda Registro de instruccioacuten (IR Instruction Regiacutester) Contiene la uacuteltima instruccioacuten leiacuteda Todos los disentildeos de procesadores

incluyen ademaacutes un registro o conjunto de registros conocidos a menudo como palabra de estado del programa (PSW Program Status Word) que contiene informacioacuten de estado Normalmente la PSW contiene coacutedigos de condicioacuten junto a otra informacioacuten de estado Entre los campos e indicadores maacutes comunes se incluyen los siguientes

Signo Contiene el bit del signo de la uacuteltima operacioacuten aritmeacutetica efectuada Cero Se activa cuando el resultado de una operacioacuten aritmeacutetica es cero

Acarreo Se activa cuando como resultado de una suma o una resta se produce un acarreo maacutes allaacute del bit maacutes significativo Se utiliza en operaciones aritmeacuteticas de maacutes de una palabra

Igualdad Se activa si una comparacioacuten loacutegica da como resultado la igualdad Desbordamiento Empleado para sentildealar un desbordamiento aritmeacutetico Habilitarinhahilitar interrupcioacutenes Empleado para habilitar o inhabilitar interrupciones Cuando Las interrupciones estaacuten

inhabilitadas el procesador las ignora Esto es muy deseable cuando el sistema operativo estaacute ocupado en el tratamiento de otra interrupcioacuten

Supervisor Indica si el procesador estaacute ejecutando en modo supervisor o en modo usuario Ciertas instrucciones privilegiadas soacutelo se pueden ejecutar en modo supervisor y soacutelo se puede tener acceso a ciertas aacutereas de memoria en modo supervisor

En el disentildeo de un procesador especiacutefico se pueden encontrar una serie de registros relacionados con el estado y el control Ademaacutes de la PSW puede haber un puntero a un bloque de memoria que contenga informacioacuten de estado adicional En maacutequinas que utilizan varios tipos de interrupcioacuten se puede ofrecer una serie de registros con punteros a cada rutina de tratamiento de interrupcioacuten Si se utiliza una pila para implementar ciertas funciones (por ejemplo las llamadas a procedimientos) entonces se necesita un puntero a la pila Por uacuteltimo los registros tambieacuten pueden utilizarse para el control de las operaciones de ES Una serie de factores inciden en el disentildeo de la organizacioacuten de los registros de control y estado Un punto clave es el soporte del sistema operativo Cierto tipo de informacioacuten de control es de utilidad especiacutefica para el sistema operativo Si el disentildeador del procesador dispone de una visioacuten funcional del sistema operativo la organizacioacuten de los registros puede adaptarse convenientementeOtra decisioacuten clave del disentildeo es la asignacioacuten de informacioacuten de control a los registros y la memoria Es habitual dedicar los primeros centenares o miles de palabras (las maacutes bajas) de memoria para el control El disentildeador debe decidir la cantidad de informacioacuten de control que debe residir en los raacutepidos y costosos registros junto a la cantidad que debe permanecer en memoria principal que es maacutes lenta y barata

httpslamiradelsniperwordpresscom20120820registros-del-procesador

1 Los registros

El procesador necesita para su funcionamiento de ciertas aacutereas de almacenamiento que aquiacute se llaman registros y que son de dimensiones miacutenimas [3] sin embargo tienen la ventaja de su rapidez Comparados con los accesos a RAM los de registro son como miacutenimo 10 veces maacutes veloces

El 8088 dispone de catorce registros de 16 bits que se agrupan en cuatro grupos y que reciben nombres especiales (precisamente los que se utilizan para designarlos en lenguaje ensamblador)

sect311 Registros de uso general

Existen 4 registros denominados AX BX CX y DX que en realidad tienen asignados usos caracteriacutesticos aunque pueden ser utilizados a discrecioacuten para cualquier cosa que necesitemos

AX es denominado acumulador suele contener uno de los operandos que intervienen en las operaciones aritmeacuteticas y loacutegicas y despueacutes de esta el resultado de la operacioacuten En general

las instrucciones que trabajan con este registro (o su mitad inferior) tienen un microcoacutedigo maacutes simple que la misma instruccioacuten ejecutada con otro registro

BX es el registro base suele contener la direccioacuten de inicio de una tabla de valores

CX es denominado contador Las instrucciones de bucle (LOOP) utilizan este registro como contador

DX es un registro de datos multiuso Se utiliza en operaciones de multiplicacioacuten y divisioacuten junto con AX En operaciones de entradasalida de puertos INOUT su mitad inferior DL contiene el

nuacutemero de puerto ( 25)

Aunque estos cuatro registros son de 16 bits (como los 10 restantes) [6] en caso necesario pueden ser utilizados en dos mitades (nibbles) High y Low de 8 bits con lo que puede considerarse que existen 12 registros de uso general (no simultaacuteneos) los anteriores y sus mitades AH AL BH BL CH CL DH y DL

sect312 Registros de segmento

Se dispone de cuatro registros que sirven para contener las direcciones de otros tantos segmentos (zonas de 64 KB de memoria) Utilizaacutendolos en conjuncioacuten con otros registros que sentildealan las

direcciones concretas dentro de estos segmentos (los desplazamientos ) permiten manejar la totalidad de la memoria direccionable (el bus de direcciones es de 20 bits) Ver al respecto el epiacutegrafe

Direccionamiento segmentado ( 51)

Segmento de coacutedigo CS (Code segment) Sentildeala la direccioacuten del segmento de coacutedigo del

programa que se estaacute ejecutando ( E132) Segmento de datos DS (Data segment) Sentildeala la direccioacuten del segmento de datos del

programa en ejecucioacuten ( E132) Segmento de pila SS (Stack segment) Sentildeala la direccioacuten del segmento donde estaacute la pila

del programa ( E132) Segmento extra ES (Extra segment) Es un segmento auxiliar a los anteriores se utiliza para

sentildealar espacio extra en alguno de los segmentos o para almacenar momentaacuteneamente direcciones intermedias

Nota Puede ocurrir que programas pequentildeos utilicen el mismo segmento para el coacutedigo los datos y la pila

sect313 Registros de puntero

Son 5 registros destinados a contener direcciones estas direcciones son desplazamientos dentro de los

segmentos indicados por los registros de segmento (ver figura 51 Fig2)

El primero denominado indistintamente puntero de instruccioacuten IP (Instruccioacuten pointer) y contador de programa PC(Program counter) indica el desplazamiento (dentro del segmento de coacutedigo CS) de la proacutexima instruccioacuten a ejecutar

El puntero de pila SP (Stack Pointer) sentildeala el desplazamiento del final de la pila dentro del segmento de pila SS En caso necesario la pila puede crecer a partir de este punto de forma que por ejemplo una nueva invocacioacuten de funcioacuten crearaacute un nuevo registro de activacioacuten que comenzaraacute en este punto

El puntero base BP (Base pointer) sentildeala el desplazamiento (dentro del segmento de pila SS) donde se encuentra el origen de la zona ocupada por las variables dinaacutemicas

Existen dos registros denominados de iacutendice en razoacuten de su utilizacioacuten muy particular el iacutendice fuente SI (Source index) y el iacutendice destino DI (Destination index) Generalmente estos dos registros se utilizan con alguno de los registros de uso general y con ciertas

instrucciones especiacuteficamente pensadas para transferir datos (dentro de un rango de posiciones de memoria) desde un punto inicial de un segmento de datos a otro

Ver en la paacutegina adjunta un ejemplo relativo al uso de punteros ( 32 Ejemplo-2)

sect314 Registro de estado

Existe un registro especial el registro de estado (FLAGS) en el que 9 de los 18 bits actuacutean como semaacuteforos (indicadores del estado del procesador y del resultado de determinadas operaciones) Por ejemplo si despueacutes de una suma aritmeacutetica hay o no desbordamiento del bit maacutes significativo

Los nombres y situacioacuten de cada uno dentro de la palabra de 16 bits se muestran en la figura 2

Cada bits individual puede estar activo (1) o inactivo (0) y tiene un identificador que termina en F(Flag) Son los siguientes

Bit Indicador de Uso

CF Acarreo (Carry Flag)

Indicador de arrastre del bit de mayor orden que puede ocurrir en las operaciones aritmeacuteticas suma y resta

PF Paridad (Parity Flag)

Si estaacute activo Indica un nuacutemero par de bits activos (bits cuyo contenido es 1) Esta informacioacuten es uacutetil cuando el procesador controla transmisiones de datos

AF Acarreo auxiliar Indicador de ajuste en operaciones aritmeacuteticas con cantidades

BCD ( E01w1)

ZF Cero (Zero Flag) Estaacute activo si el resultado de operacioacuten es cero o resultado de comparacioacuten igual

SF Signo (Sign Flag) Si estaacute activo indica que el resultado de operacioacuten o de comparacioacuten son negativos [5]

TF Detencioacuten (Trap Flag)

Si estaacute activo el procesador genera automaacuteticamente una interrupcioacuten despueacutes de la ejecucioacuten de cada instruccioacuten lo que permite controlar paso a paso la ejecucioacuten del programa Este bit debe estar normalmente inactivo (a 0)

IF Interrupcioacuten (Interrupt Flag)

Este bit controla el estado del sistema de interrupciones

enmascarables ( 24) Cuando estaacute activo (1) permite las

interrupciones el estado inactivo (0) las deshabilita

DF Direccioacuten (Direction Flag)

Indica la direccioacuten de las operaciones

OF Desbordamiento (Overflow Flag)

Sentildeala desbordamiento aritmeacutetico

Nota Los usuarios de MS-DOS o Windows puede usar el programa DEBUG ( 171) para inspeccionar y modificar el contenido de los registros de la siguiente forma

Invocar DEBUG desde una ventana DOS (suponemos que estamos en Windows el prompt es un guioacuten -)

introducir el comando R (pedimos que nos muestre el contenido de los registros)

Salir de Debug con Q

En mi PC la respuesta al comando tiene el siguiente aspecto

AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=1779 ES=1779 SS=1779 CS=1779 IP=0100 NV UP EI PL NZ NA PO NC

Los valores estaacuten expresados en hexadecimal La uacuteltima secuencia de caracteres (NV UP EI PL NZ NA PO NC) muestra el contenido del registro de estado (el bit TF de detencioacuten no se muestra) el significado de la notacioacuten utilizada es el siguiente

Bit Indicador de Indicativo si bit 1 Indicativo si bit 0

CF Acarreo CY (Carry yes) NC (No Carry)

PF Paridad PE (Parity Even) paridad par PO (Parity Odd) paridad impar

AF Acarreo auxiliar AC (Auxiliar Carry) NA (No Auxiliar)

ZF Cero ZR (Zero) NZ (No Zero)

SF Signo NG (Negative) negativo PL (Plus) positivo

IF Interrupcioacuten EI (Enabled Interrupt) activa DI (Disabled Interrupt) desactivada

DF Direccioacuten DN (Down) decremento UP incremento

OF Desbordamiento OV (Overflow) NV (No overflow)

Tambieacuten es posible inspeccionar el contenido de un solo registro antildeadiendo al comando R el nombre del registro Por ejemplo el comando R IP muestra el contenido del contador de programa Los nombres que pueden utilizarse para los registros son los siguientes AX BX CX DX SP BP SI DI DS ES SS CS IP y F (este uacuteltimo para el registro de estado)

Despueacutes de un comando de este tipo DEBUG responde con un prompt distinto del habitual para indicar que debe introducir el nuevo valor que desea para el registro Pulsando INTRO se vuelve al modo normal

sect315 Comentario

Observe que tanto el registro contador de programa IP como el de base BP siempre contienen direcciones de memoria (los otros pueden contener direcciones o datos) Ni los registros de segmento ni los de puntero se pueden dividir en mitades (como los de uso general)

httpwwwzatorcomHardwareH3_2htm

Definiciones de registros Definicioacuten 1 un registro es una memoria de alta velocidad y poca capacidad integrada en el microprocesador que permite guardar transitoriamente y acceder a valores muy usados generalmente en operaciones matemaacuteticas Definicioacuten 2 un registro es una porcioacuten de memoria ultrarraacutepida de poca capacidad e integrado al microprocesador que permite almacenar y acceder datos usados frecuentemente Se emplean para aumentar la velocidad de ejecucioacuten de los programas

3 Funcioacuten de los registros Los registros estaacuten en la cumbre de la jerarquiacutea de memoria y son la manera maacutes raacutepida que tiene el sistema de almacenar datos Los registros se miden generalmente por el nuacutemero de bits que almacenan por ejemplo un registro de 8 bits o un registro de 32 bitsldquo La CPU contiene un conjunto de localidades de almacenamiento temporal de datos de alta velocidad llamada registro Algunos de los registros estaacuten dedicados al control y solo la unidad de control tiene acceso a ellos Los registros restantes son los registros de uso general y el programador es el usuario que tiene acceso a ellos

4 Los nombres de los registros describen la forma como algunas instrucciones enensamblador las emplean

5 Algunos registros basicos Dentro del conjunto baacutesico de registros de control se deben incluir a los siguientesa middot Contador de programa (PC)b middot Registro de direcciones de la memoria (MAR)c middot Registro de datos (RD)d middot Registro de instrucciones (IR)e middot Palabra de estado de programa (PSW)

6 Funcioacuten del PC La funcioacuten del PC consiste en seguir la pista de la instruccioacuten por buscar (capturar) en el siguiente ciclo de maquina por lo tanto contiene la direccioacuten de la siguiente instruccioacuten por ejecutar El PC es modificado dentro del ciclo de buacutesqueda de la instruccioacuten actual mediante la suma de una constante El numero que se agrega al PC es la longitud de una instruccioacuten en palabras Por lo tanto si una instruccioacuten tiene una palabra de longitud se agrega 1 al PC si una instruccioacuten tiene dos palabras de largo se agrega 2 y asiacute sucesivamente

7 Funcioacuten de MAR Registro de direcciones de la memoria (MAR) funciona como registro de enlace entre la CPU y el canal de direcciones Cuando se logra el acceso a la memoria la direccioacuten es colocada en el MAR por la unidad de control y ahiacute permanece hasta que se completa la transaccioacuten El numero de bit que hay en el MAR es igual al del canal de direcciones La diferencia que existe entre el PC y el MAR es que durante el ciclo de ejecucioacuten de una instruccioacuten el PC y el MAR sirven al mismo fin Sin embargo muchas de las instrucciones de la maquina hacen referencia a la memoria y operan con los datos que

estaacuten en ella Como la direccioacuten de los datos suele ser diferente de la instruccioacuten siguiente se necesita el MAR

8 Funcioacuten de RD Registro de datos la funcioacuten del RD consiste en proporcionar un aacuterea de almacenamiento temporal (memoria intermedia acumulada o buffer) de datos que se intercambian entre la PCU y la memoria Los datos pueden ser instrucciones (obtenidos en el ciclo de ejecucioacuten) o datos del operando (obtenidos en el ciclo de ejecucioacuten) Debido a su conexioacuten directa con el canal de datos el RD contiene el mismo numero de bit que dicho canal

9 Funcioacuten de IR Registro de instrucciones (IR) es un registro que conserva el coacutedigo de operacioacuten de la instruccioacuten en todo el ciclo de la maquina El coacutedigo es empleado por la unidad de control de la CPU para generar las sentildeales apropiadas que controla le ejecucioacuten de la instruccioacuten La longitud del ER es la longitud en bit del coacutedigo de operacioacuten

10 Funcioacuten de PSW Palabra de estado de programa (PSW) la palabra de estado o condicioacuten de programa almacena informacioacuten pertinente sobre el programa que este ejecutaacutendose Por ejemplo al completarse una funcioacuten de la unidad aritmeacutetica loacutegica se modifica un conjunto de bit llamados coacutedigos (o sentildeales de condicioacuten) Estos bit especifican si el resultado de una operacioacuten aritmeacutetica fue 0 o negativo o si el resultado se desbordoacute Ademaacutes el PSW contiene bit que hacen posible que la computadora responda a solicitudes de servicio asincroacutenicas generadas por dispositivos de Entrada-Salida o condiciones de error interno Estas sentildeales se denominan interrupciones

  • 1 Los registros
  • sect311 Registros de uso general
  • sect312 Registros de segmento
  • sect313 Registros de puntero
  • sect314 Registro de estado
  • sect315 Comentario
Page 8: Registros de procesador.docx

Aunque los Flags existen fiacutesicamente dentro de la CPU estaacuten agrupados loacutegicamente formando un registro Los Flags del Z80 son los siguientes

Flag de Cero(Z) Toma el valor 1 si el resultado de una operacioacuten es cero Es el bit seis Flag de signo(S) Toma el valor 1 si el resultado de una operacioacuten es negativo Es el bit siete Flag de Carry(C) Este flag es afectado por las instrucciones de desplazamiento y es puesto en 1 oacute 0 seguacuten el valor del bit desplazado Tambieacuten es afectado por las operaciones aritmeacuteticas Este flag es el bit ceroFlag de Paridad y overflow(PV) En el caso de paridad se pone en 1 si el resultado de una operacioacuten posee un nuacutemero par de unos Cuando el flag PV se usa para representar overflow el flag se pone en 1 si ocurre un overflow despueacutes de una operacioacuten aritmeacutetica Este flag es el bit 2Flag H y N Son dos Flip Flop que no pueden ser examinados por las instrucciones de salto condicional El Z80 los usa para las operaciones BCD H representa el rebalse que genera considerando los cuatro bits menos significativos del resultado y N es el flag de resta el cual se activa para indicar si la uacuteltima instruccioacuten ejecutada fue suma o resta En el caso general una instruccioacuten de resta coloca en 1 el flag N y una instruccioacuten de suma lo coloca en 0 Los Flags H y N son los bits 4 y 1 respectivamente

Registros de propoacutesito especial Program Counter Es un registro de 16 bits que indica la direccioacuten de la proacutexima instruccioacuten ejecutar Las instrucciones del Z80 pueden contar de uno dos tres o cuatro bytes

Stack-Pointer Es un registro de 16 bits que indica la direccioacuten de una memoria RAM externa denominada Stack El objetivo de esta aacuterea de memoria es proporcionar un medio de almacenamiento temporal de los registros del usuario registro de Flags y del program Counter La provisioacuten de Stack es fundamental para operaciones tales como los llamados a sub-rutinas e interrupcionesRegistros iacutendices IX e IY Estos registros son de 16 bits disentildeados para permitir un direccionamiento indexado en los programas del Z80 Cuando se ejecuta una instruccioacuten en un modo de direccionamiento indexado se usa uno de los dos registros iacutendices para calcular la direccioacuten del operandoRegistro de interrupciones I Es un registro de 8 bits que puede ser cargado para especificar el byte maacutes significativo de una direccioacuten de memoria El byte menos significativo es proporcionado por el dispositivo que solicita la interrupcioacutenRegistro de refresh de memoria R Es un registro especial disentildeado para proporcionar un refresh automaacutetico de las memorias RAM dinaacutemicas Registro de instrucciones El registro de instrucciones tiene por misioacuten almacenar el coacutedigo de operacioacuten de la instruccioacuten leiacuteda desde memoria Este coacutedigo es descodificado y con esta informacioacuten se dirigen todos los micro-pasos httpwwwoocitiesorgmxantrahxgdocumentosorg_compregistrohtml

Registros del procesadorDentro del procesador hay un conjunto de registros que ofrecen un nivel de memoria que es maacutes raacutepido y pequentildeo que la memoria principal Los registros del procesador sirven para dos funciones Registros visibles de usuario Un programador de lenguaje de maacutequina o ensamblador puede minimizar las referencias a memoria principal mediante un uso oacuteptimo de estos registros Con lenguajes de alto nivel un compilador que optimice coacutedigo intentaraacute hacer una seleccioacuten inteligente de queacute variables asignar a registros y cuaacuteles a ubicaciones de la memoria principal Algunos lenguajes de alto nivel como C permiten que el programador indique al compilador queacute variables se deben almacenar en registros Registros de control y de estado Son utilizados por el procesador para el control de las operaciones o por rutinas privilegiadas del sistema operativo para controlar la ejecucioacuten de los programas No hay una separacioacuten clara de los registros en estas dos categoriacuteas Por ejemplo en algunas maacutequinas el contador de programa es visible para los usuarios pero en otras muchas no lo es Sin embargo para el propoacutesito de la discusioacuten que viene a continuacioacuten es conveniente emplear estas categoriacuteas Registros visibles de usuario Un registro visible de usuario es aqueacutel que puede ser referenciado por medio del lenguaje de maacutequina que ejecuta el procesador y es por lo general accesible para todos los programas incluyendo tanto los programas de aplicacioacuten como los del

sistema Las clases de registro que normalmente estaacuten disponibles son los registros de datos los registros de direccioacuten y los registros de coacutedigos de condicioacuten

Los registros de datosPueden ser asignados por el programador a diversas funciones En algunos casos son de propoacutesito general y pueden ser empleados por cualquier instruccioacuten de maacutequina que lleve a cabo operaciones sobre los datos Sin embargo suelen ponerse ciertas restricciones a menudo Por ejemplo puede haber registros dedicados a operaciones en coma flotante

Los registros de direccioacutenContienen direcciones en la memoria principal de datos e instrucciones o una parte de la direccioacuten que se utiliza en el caacutelculo de la direccioacuten completa Estos registros pueden ser de propoacutesito general o pueden estar dedicados a un modo especiacutefico de direccionamiento Entre los ejemplos se incluyen

Registro iacutendice El direccionamiento indexado es un modo comuacuten de direccionamiento que implica sumar un iacutendice a un valor base para obtener la direccioacuten efectiva

Puntero de segmento Con direccionamiento segmentado la memoria se divide en segmentos que son bloques de palabras de tamantildeo variable Una referencia a memoria consta de una referencia a un segmento particular y un desplazamiento dentro del segmento En este modo se utiliza un registro que alberga una direccioacuten base (ubicacioacuten inicial) de un segmento Puede haber varios registros de este tipo por ejemplo uno para el sistema operativo (es decir cuando se ejecuta coacutedigo del sistema operativo en el procesador) y otro para la aplicacioacuten que estaacute en ejecucioacuten

Puntero de pila Si hay un direccionamiento de pila visible para los usuarios la pila estaraacute por lo general en la memoria principal existiendo un registro dedicado a sentildealar la cima de la pila

Esto permite el uso de instrucciones que no contienen ninguacuten campo de direccioacuten tales como push (poner) y pop (sacar) Una uacuteltima categoriacutea de registros que son al menos parcialmente visibles para los usuarios son aquellos que contienen coacutedigos de condicioacuten (tambieacuten denominados indicadores o flags) Los coacutedigos de condicioacuten son bits activados por el hardware del procesador como resultado de determinadas operaciones

Por ejemplo una operacioacuten aritmeacutetica puede producir un resultado positivo negativo cero o desbordamiento Ademaacutes de almacenar el resultado de esta operacioacuten en un registro o en memoria tambieacuten se activaraacute un coacutedigo de condicioacuten Este coacutedigo puede consultarse posteriormente como parte de una operacioacuten de salto condicional

Los bits de coacutedigo de condicioacuten se agrupan en uno o maacutes registros Estos forman generalmente parte de un registro de control En general las instrucciones de maacutequina permiten leer estos bits mediante referencias impliacutecitas pero no pueden ser alterados por el programador

En algunas maacutequinas una llamada a un procedimiento o subrutina provocaraacute que los registros visibles de usuario se salven automaacuteticamente para luego restaurarlos al retomar Este proceso de salvar y restaurar lo lleva a cabo el procesador como parte de la ejecucioacuten de las instrucciones de llamada y retomo Esto permite que cada procedimiento pueda usar los registros de forma independiente En otras maacutequinas es responsabilidad del programador salvar los contenidos de los registros de usuario visibles que sean relevantes antes de hacer la llamada a un procedimiento incluyendo instrucciones en el programa con tal propoacutesito Asiacute pues las instrucciones de salvar y restaurar pueden ser llevadas a cabo por el hardware o por el software dependiendo de la maacutequina

Registros de control y de estado Varios registros se emplean para controlar las operaciones del procesador En la mayoriacutea de las maacutequinas la mayor parte de estos registros no son visibles para los usuarios Algunos de ellos pueden estar accesibles a las instrucciones de maacutequina ejecutadas en un modo de control o modo del sistemaPor supuesto maacutequinas diferentes tendraacuten organizaciones diferentes de registros y podraacuten usar terminologiacuteas distintas

Ademaacutes de los registros MAR MBR IOAR y IOBR mencionados anteriormente los siguientes registros son esenciales en la ejecucioacuten de instrucciones Contador de programa (PC Program Counter) Contiene la direccioacuten de la instruccioacuten a ser leiacuteda Registro de instruccioacuten (IR Instruction Regiacutester) Contiene la uacuteltima instruccioacuten leiacuteda Todos los disentildeos de procesadores

incluyen ademaacutes un registro o conjunto de registros conocidos a menudo como palabra de estado del programa (PSW Program Status Word) que contiene informacioacuten de estado Normalmente la PSW contiene coacutedigos de condicioacuten junto a otra informacioacuten de estado Entre los campos e indicadores maacutes comunes se incluyen los siguientes

Signo Contiene el bit del signo de la uacuteltima operacioacuten aritmeacutetica efectuada Cero Se activa cuando el resultado de una operacioacuten aritmeacutetica es cero

Acarreo Se activa cuando como resultado de una suma o una resta se produce un acarreo maacutes allaacute del bit maacutes significativo Se utiliza en operaciones aritmeacuteticas de maacutes de una palabra

Igualdad Se activa si una comparacioacuten loacutegica da como resultado la igualdad Desbordamiento Empleado para sentildealar un desbordamiento aritmeacutetico Habilitarinhahilitar interrupcioacutenes Empleado para habilitar o inhabilitar interrupciones Cuando Las interrupciones estaacuten

inhabilitadas el procesador las ignora Esto es muy deseable cuando el sistema operativo estaacute ocupado en el tratamiento de otra interrupcioacuten

Supervisor Indica si el procesador estaacute ejecutando en modo supervisor o en modo usuario Ciertas instrucciones privilegiadas soacutelo se pueden ejecutar en modo supervisor y soacutelo se puede tener acceso a ciertas aacutereas de memoria en modo supervisor

En el disentildeo de un procesador especiacutefico se pueden encontrar una serie de registros relacionados con el estado y el control Ademaacutes de la PSW puede haber un puntero a un bloque de memoria que contenga informacioacuten de estado adicional En maacutequinas que utilizan varios tipos de interrupcioacuten se puede ofrecer una serie de registros con punteros a cada rutina de tratamiento de interrupcioacuten Si se utiliza una pila para implementar ciertas funciones (por ejemplo las llamadas a procedimientos) entonces se necesita un puntero a la pila Por uacuteltimo los registros tambieacuten pueden utilizarse para el control de las operaciones de ES Una serie de factores inciden en el disentildeo de la organizacioacuten de los registros de control y estado Un punto clave es el soporte del sistema operativo Cierto tipo de informacioacuten de control es de utilidad especiacutefica para el sistema operativo Si el disentildeador del procesador dispone de una visioacuten funcional del sistema operativo la organizacioacuten de los registros puede adaptarse convenientementeOtra decisioacuten clave del disentildeo es la asignacioacuten de informacioacuten de control a los registros y la memoria Es habitual dedicar los primeros centenares o miles de palabras (las maacutes bajas) de memoria para el control El disentildeador debe decidir la cantidad de informacioacuten de control que debe residir en los raacutepidos y costosos registros junto a la cantidad que debe permanecer en memoria principal que es maacutes lenta y barata

httpslamiradelsniperwordpresscom20120820registros-del-procesador

1 Los registros

El procesador necesita para su funcionamiento de ciertas aacutereas de almacenamiento que aquiacute se llaman registros y que son de dimensiones miacutenimas [3] sin embargo tienen la ventaja de su rapidez Comparados con los accesos a RAM los de registro son como miacutenimo 10 veces maacutes veloces

El 8088 dispone de catorce registros de 16 bits que se agrupan en cuatro grupos y que reciben nombres especiales (precisamente los que se utilizan para designarlos en lenguaje ensamblador)

sect311 Registros de uso general

Existen 4 registros denominados AX BX CX y DX que en realidad tienen asignados usos caracteriacutesticos aunque pueden ser utilizados a discrecioacuten para cualquier cosa que necesitemos

AX es denominado acumulador suele contener uno de los operandos que intervienen en las operaciones aritmeacuteticas y loacutegicas y despueacutes de esta el resultado de la operacioacuten En general

las instrucciones que trabajan con este registro (o su mitad inferior) tienen un microcoacutedigo maacutes simple que la misma instruccioacuten ejecutada con otro registro

BX es el registro base suele contener la direccioacuten de inicio de una tabla de valores

CX es denominado contador Las instrucciones de bucle (LOOP) utilizan este registro como contador

DX es un registro de datos multiuso Se utiliza en operaciones de multiplicacioacuten y divisioacuten junto con AX En operaciones de entradasalida de puertos INOUT su mitad inferior DL contiene el

nuacutemero de puerto ( 25)

Aunque estos cuatro registros son de 16 bits (como los 10 restantes) [6] en caso necesario pueden ser utilizados en dos mitades (nibbles) High y Low de 8 bits con lo que puede considerarse que existen 12 registros de uso general (no simultaacuteneos) los anteriores y sus mitades AH AL BH BL CH CL DH y DL

sect312 Registros de segmento

Se dispone de cuatro registros que sirven para contener las direcciones de otros tantos segmentos (zonas de 64 KB de memoria) Utilizaacutendolos en conjuncioacuten con otros registros que sentildealan las

direcciones concretas dentro de estos segmentos (los desplazamientos ) permiten manejar la totalidad de la memoria direccionable (el bus de direcciones es de 20 bits) Ver al respecto el epiacutegrafe

Direccionamiento segmentado ( 51)

Segmento de coacutedigo CS (Code segment) Sentildeala la direccioacuten del segmento de coacutedigo del

programa que se estaacute ejecutando ( E132) Segmento de datos DS (Data segment) Sentildeala la direccioacuten del segmento de datos del

programa en ejecucioacuten ( E132) Segmento de pila SS (Stack segment) Sentildeala la direccioacuten del segmento donde estaacute la pila

del programa ( E132) Segmento extra ES (Extra segment) Es un segmento auxiliar a los anteriores se utiliza para

sentildealar espacio extra en alguno de los segmentos o para almacenar momentaacuteneamente direcciones intermedias

Nota Puede ocurrir que programas pequentildeos utilicen el mismo segmento para el coacutedigo los datos y la pila

sect313 Registros de puntero

Son 5 registros destinados a contener direcciones estas direcciones son desplazamientos dentro de los

segmentos indicados por los registros de segmento (ver figura 51 Fig2)

El primero denominado indistintamente puntero de instruccioacuten IP (Instruccioacuten pointer) y contador de programa PC(Program counter) indica el desplazamiento (dentro del segmento de coacutedigo CS) de la proacutexima instruccioacuten a ejecutar

El puntero de pila SP (Stack Pointer) sentildeala el desplazamiento del final de la pila dentro del segmento de pila SS En caso necesario la pila puede crecer a partir de este punto de forma que por ejemplo una nueva invocacioacuten de funcioacuten crearaacute un nuevo registro de activacioacuten que comenzaraacute en este punto

El puntero base BP (Base pointer) sentildeala el desplazamiento (dentro del segmento de pila SS) donde se encuentra el origen de la zona ocupada por las variables dinaacutemicas

Existen dos registros denominados de iacutendice en razoacuten de su utilizacioacuten muy particular el iacutendice fuente SI (Source index) y el iacutendice destino DI (Destination index) Generalmente estos dos registros se utilizan con alguno de los registros de uso general y con ciertas

instrucciones especiacuteficamente pensadas para transferir datos (dentro de un rango de posiciones de memoria) desde un punto inicial de un segmento de datos a otro

Ver en la paacutegina adjunta un ejemplo relativo al uso de punteros ( 32 Ejemplo-2)

sect314 Registro de estado

Existe un registro especial el registro de estado (FLAGS) en el que 9 de los 18 bits actuacutean como semaacuteforos (indicadores del estado del procesador y del resultado de determinadas operaciones) Por ejemplo si despueacutes de una suma aritmeacutetica hay o no desbordamiento del bit maacutes significativo

Los nombres y situacioacuten de cada uno dentro de la palabra de 16 bits se muestran en la figura 2

Cada bits individual puede estar activo (1) o inactivo (0) y tiene un identificador que termina en F(Flag) Son los siguientes

Bit Indicador de Uso

CF Acarreo (Carry Flag)

Indicador de arrastre del bit de mayor orden que puede ocurrir en las operaciones aritmeacuteticas suma y resta

PF Paridad (Parity Flag)

Si estaacute activo Indica un nuacutemero par de bits activos (bits cuyo contenido es 1) Esta informacioacuten es uacutetil cuando el procesador controla transmisiones de datos

AF Acarreo auxiliar Indicador de ajuste en operaciones aritmeacuteticas con cantidades

BCD ( E01w1)

ZF Cero (Zero Flag) Estaacute activo si el resultado de operacioacuten es cero o resultado de comparacioacuten igual

SF Signo (Sign Flag) Si estaacute activo indica que el resultado de operacioacuten o de comparacioacuten son negativos [5]

TF Detencioacuten (Trap Flag)

Si estaacute activo el procesador genera automaacuteticamente una interrupcioacuten despueacutes de la ejecucioacuten de cada instruccioacuten lo que permite controlar paso a paso la ejecucioacuten del programa Este bit debe estar normalmente inactivo (a 0)

IF Interrupcioacuten (Interrupt Flag)

Este bit controla el estado del sistema de interrupciones

enmascarables ( 24) Cuando estaacute activo (1) permite las

interrupciones el estado inactivo (0) las deshabilita

DF Direccioacuten (Direction Flag)

Indica la direccioacuten de las operaciones

OF Desbordamiento (Overflow Flag)

Sentildeala desbordamiento aritmeacutetico

Nota Los usuarios de MS-DOS o Windows puede usar el programa DEBUG ( 171) para inspeccionar y modificar el contenido de los registros de la siguiente forma

Invocar DEBUG desde una ventana DOS (suponemos que estamos en Windows el prompt es un guioacuten -)

introducir el comando R (pedimos que nos muestre el contenido de los registros)

Salir de Debug con Q

En mi PC la respuesta al comando tiene el siguiente aspecto

AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=1779 ES=1779 SS=1779 CS=1779 IP=0100 NV UP EI PL NZ NA PO NC

Los valores estaacuten expresados en hexadecimal La uacuteltima secuencia de caracteres (NV UP EI PL NZ NA PO NC) muestra el contenido del registro de estado (el bit TF de detencioacuten no se muestra) el significado de la notacioacuten utilizada es el siguiente

Bit Indicador de Indicativo si bit 1 Indicativo si bit 0

CF Acarreo CY (Carry yes) NC (No Carry)

PF Paridad PE (Parity Even) paridad par PO (Parity Odd) paridad impar

AF Acarreo auxiliar AC (Auxiliar Carry) NA (No Auxiliar)

ZF Cero ZR (Zero) NZ (No Zero)

SF Signo NG (Negative) negativo PL (Plus) positivo

IF Interrupcioacuten EI (Enabled Interrupt) activa DI (Disabled Interrupt) desactivada

DF Direccioacuten DN (Down) decremento UP incremento

OF Desbordamiento OV (Overflow) NV (No overflow)

Tambieacuten es posible inspeccionar el contenido de un solo registro antildeadiendo al comando R el nombre del registro Por ejemplo el comando R IP muestra el contenido del contador de programa Los nombres que pueden utilizarse para los registros son los siguientes AX BX CX DX SP BP SI DI DS ES SS CS IP y F (este uacuteltimo para el registro de estado)

Despueacutes de un comando de este tipo DEBUG responde con un prompt distinto del habitual para indicar que debe introducir el nuevo valor que desea para el registro Pulsando INTRO se vuelve al modo normal

sect315 Comentario

Observe que tanto el registro contador de programa IP como el de base BP siempre contienen direcciones de memoria (los otros pueden contener direcciones o datos) Ni los registros de segmento ni los de puntero se pueden dividir en mitades (como los de uso general)

httpwwwzatorcomHardwareH3_2htm

Definiciones de registros Definicioacuten 1 un registro es una memoria de alta velocidad y poca capacidad integrada en el microprocesador que permite guardar transitoriamente y acceder a valores muy usados generalmente en operaciones matemaacuteticas Definicioacuten 2 un registro es una porcioacuten de memoria ultrarraacutepida de poca capacidad e integrado al microprocesador que permite almacenar y acceder datos usados frecuentemente Se emplean para aumentar la velocidad de ejecucioacuten de los programas

3 Funcioacuten de los registros Los registros estaacuten en la cumbre de la jerarquiacutea de memoria y son la manera maacutes raacutepida que tiene el sistema de almacenar datos Los registros se miden generalmente por el nuacutemero de bits que almacenan por ejemplo un registro de 8 bits o un registro de 32 bitsldquo La CPU contiene un conjunto de localidades de almacenamiento temporal de datos de alta velocidad llamada registro Algunos de los registros estaacuten dedicados al control y solo la unidad de control tiene acceso a ellos Los registros restantes son los registros de uso general y el programador es el usuario que tiene acceso a ellos

4 Los nombres de los registros describen la forma como algunas instrucciones enensamblador las emplean

5 Algunos registros basicos Dentro del conjunto baacutesico de registros de control se deben incluir a los siguientesa middot Contador de programa (PC)b middot Registro de direcciones de la memoria (MAR)c middot Registro de datos (RD)d middot Registro de instrucciones (IR)e middot Palabra de estado de programa (PSW)

6 Funcioacuten del PC La funcioacuten del PC consiste en seguir la pista de la instruccioacuten por buscar (capturar) en el siguiente ciclo de maquina por lo tanto contiene la direccioacuten de la siguiente instruccioacuten por ejecutar El PC es modificado dentro del ciclo de buacutesqueda de la instruccioacuten actual mediante la suma de una constante El numero que se agrega al PC es la longitud de una instruccioacuten en palabras Por lo tanto si una instruccioacuten tiene una palabra de longitud se agrega 1 al PC si una instruccioacuten tiene dos palabras de largo se agrega 2 y asiacute sucesivamente

7 Funcioacuten de MAR Registro de direcciones de la memoria (MAR) funciona como registro de enlace entre la CPU y el canal de direcciones Cuando se logra el acceso a la memoria la direccioacuten es colocada en el MAR por la unidad de control y ahiacute permanece hasta que se completa la transaccioacuten El numero de bit que hay en el MAR es igual al del canal de direcciones La diferencia que existe entre el PC y el MAR es que durante el ciclo de ejecucioacuten de una instruccioacuten el PC y el MAR sirven al mismo fin Sin embargo muchas de las instrucciones de la maquina hacen referencia a la memoria y operan con los datos que

estaacuten en ella Como la direccioacuten de los datos suele ser diferente de la instruccioacuten siguiente se necesita el MAR

8 Funcioacuten de RD Registro de datos la funcioacuten del RD consiste en proporcionar un aacuterea de almacenamiento temporal (memoria intermedia acumulada o buffer) de datos que se intercambian entre la PCU y la memoria Los datos pueden ser instrucciones (obtenidos en el ciclo de ejecucioacuten) o datos del operando (obtenidos en el ciclo de ejecucioacuten) Debido a su conexioacuten directa con el canal de datos el RD contiene el mismo numero de bit que dicho canal

9 Funcioacuten de IR Registro de instrucciones (IR) es un registro que conserva el coacutedigo de operacioacuten de la instruccioacuten en todo el ciclo de la maquina El coacutedigo es empleado por la unidad de control de la CPU para generar las sentildeales apropiadas que controla le ejecucioacuten de la instruccioacuten La longitud del ER es la longitud en bit del coacutedigo de operacioacuten

10 Funcioacuten de PSW Palabra de estado de programa (PSW) la palabra de estado o condicioacuten de programa almacena informacioacuten pertinente sobre el programa que este ejecutaacutendose Por ejemplo al completarse una funcioacuten de la unidad aritmeacutetica loacutegica se modifica un conjunto de bit llamados coacutedigos (o sentildeales de condicioacuten) Estos bit especifican si el resultado de una operacioacuten aritmeacutetica fue 0 o negativo o si el resultado se desbordoacute Ademaacutes el PSW contiene bit que hacen posible que la computadora responda a solicitudes de servicio asincroacutenicas generadas por dispositivos de Entrada-Salida o condiciones de error interno Estas sentildeales se denominan interrupciones

  • 1 Los registros
  • sect311 Registros de uso general
  • sect312 Registros de segmento
  • sect313 Registros de puntero
  • sect314 Registro de estado
  • sect315 Comentario
Page 9: Registros de procesador.docx

sistema Las clases de registro que normalmente estaacuten disponibles son los registros de datos los registros de direccioacuten y los registros de coacutedigos de condicioacuten

Los registros de datosPueden ser asignados por el programador a diversas funciones En algunos casos son de propoacutesito general y pueden ser empleados por cualquier instruccioacuten de maacutequina que lleve a cabo operaciones sobre los datos Sin embargo suelen ponerse ciertas restricciones a menudo Por ejemplo puede haber registros dedicados a operaciones en coma flotante

Los registros de direccioacutenContienen direcciones en la memoria principal de datos e instrucciones o una parte de la direccioacuten que se utiliza en el caacutelculo de la direccioacuten completa Estos registros pueden ser de propoacutesito general o pueden estar dedicados a un modo especiacutefico de direccionamiento Entre los ejemplos se incluyen

Registro iacutendice El direccionamiento indexado es un modo comuacuten de direccionamiento que implica sumar un iacutendice a un valor base para obtener la direccioacuten efectiva

Puntero de segmento Con direccionamiento segmentado la memoria se divide en segmentos que son bloques de palabras de tamantildeo variable Una referencia a memoria consta de una referencia a un segmento particular y un desplazamiento dentro del segmento En este modo se utiliza un registro que alberga una direccioacuten base (ubicacioacuten inicial) de un segmento Puede haber varios registros de este tipo por ejemplo uno para el sistema operativo (es decir cuando se ejecuta coacutedigo del sistema operativo en el procesador) y otro para la aplicacioacuten que estaacute en ejecucioacuten

Puntero de pila Si hay un direccionamiento de pila visible para los usuarios la pila estaraacute por lo general en la memoria principal existiendo un registro dedicado a sentildealar la cima de la pila

Esto permite el uso de instrucciones que no contienen ninguacuten campo de direccioacuten tales como push (poner) y pop (sacar) Una uacuteltima categoriacutea de registros que son al menos parcialmente visibles para los usuarios son aquellos que contienen coacutedigos de condicioacuten (tambieacuten denominados indicadores o flags) Los coacutedigos de condicioacuten son bits activados por el hardware del procesador como resultado de determinadas operaciones

Por ejemplo una operacioacuten aritmeacutetica puede producir un resultado positivo negativo cero o desbordamiento Ademaacutes de almacenar el resultado de esta operacioacuten en un registro o en memoria tambieacuten se activaraacute un coacutedigo de condicioacuten Este coacutedigo puede consultarse posteriormente como parte de una operacioacuten de salto condicional

Los bits de coacutedigo de condicioacuten se agrupan en uno o maacutes registros Estos forman generalmente parte de un registro de control En general las instrucciones de maacutequina permiten leer estos bits mediante referencias impliacutecitas pero no pueden ser alterados por el programador

En algunas maacutequinas una llamada a un procedimiento o subrutina provocaraacute que los registros visibles de usuario se salven automaacuteticamente para luego restaurarlos al retomar Este proceso de salvar y restaurar lo lleva a cabo el procesador como parte de la ejecucioacuten de las instrucciones de llamada y retomo Esto permite que cada procedimiento pueda usar los registros de forma independiente En otras maacutequinas es responsabilidad del programador salvar los contenidos de los registros de usuario visibles que sean relevantes antes de hacer la llamada a un procedimiento incluyendo instrucciones en el programa con tal propoacutesito Asiacute pues las instrucciones de salvar y restaurar pueden ser llevadas a cabo por el hardware o por el software dependiendo de la maacutequina

Registros de control y de estado Varios registros se emplean para controlar las operaciones del procesador En la mayoriacutea de las maacutequinas la mayor parte de estos registros no son visibles para los usuarios Algunos de ellos pueden estar accesibles a las instrucciones de maacutequina ejecutadas en un modo de control o modo del sistemaPor supuesto maacutequinas diferentes tendraacuten organizaciones diferentes de registros y podraacuten usar terminologiacuteas distintas

Ademaacutes de los registros MAR MBR IOAR y IOBR mencionados anteriormente los siguientes registros son esenciales en la ejecucioacuten de instrucciones Contador de programa (PC Program Counter) Contiene la direccioacuten de la instruccioacuten a ser leiacuteda Registro de instruccioacuten (IR Instruction Regiacutester) Contiene la uacuteltima instruccioacuten leiacuteda Todos los disentildeos de procesadores

incluyen ademaacutes un registro o conjunto de registros conocidos a menudo como palabra de estado del programa (PSW Program Status Word) que contiene informacioacuten de estado Normalmente la PSW contiene coacutedigos de condicioacuten junto a otra informacioacuten de estado Entre los campos e indicadores maacutes comunes se incluyen los siguientes

Signo Contiene el bit del signo de la uacuteltima operacioacuten aritmeacutetica efectuada Cero Se activa cuando el resultado de una operacioacuten aritmeacutetica es cero

Acarreo Se activa cuando como resultado de una suma o una resta se produce un acarreo maacutes allaacute del bit maacutes significativo Se utiliza en operaciones aritmeacuteticas de maacutes de una palabra

Igualdad Se activa si una comparacioacuten loacutegica da como resultado la igualdad Desbordamiento Empleado para sentildealar un desbordamiento aritmeacutetico Habilitarinhahilitar interrupcioacutenes Empleado para habilitar o inhabilitar interrupciones Cuando Las interrupciones estaacuten

inhabilitadas el procesador las ignora Esto es muy deseable cuando el sistema operativo estaacute ocupado en el tratamiento de otra interrupcioacuten

Supervisor Indica si el procesador estaacute ejecutando en modo supervisor o en modo usuario Ciertas instrucciones privilegiadas soacutelo se pueden ejecutar en modo supervisor y soacutelo se puede tener acceso a ciertas aacutereas de memoria en modo supervisor

En el disentildeo de un procesador especiacutefico se pueden encontrar una serie de registros relacionados con el estado y el control Ademaacutes de la PSW puede haber un puntero a un bloque de memoria que contenga informacioacuten de estado adicional En maacutequinas que utilizan varios tipos de interrupcioacuten se puede ofrecer una serie de registros con punteros a cada rutina de tratamiento de interrupcioacuten Si se utiliza una pila para implementar ciertas funciones (por ejemplo las llamadas a procedimientos) entonces se necesita un puntero a la pila Por uacuteltimo los registros tambieacuten pueden utilizarse para el control de las operaciones de ES Una serie de factores inciden en el disentildeo de la organizacioacuten de los registros de control y estado Un punto clave es el soporte del sistema operativo Cierto tipo de informacioacuten de control es de utilidad especiacutefica para el sistema operativo Si el disentildeador del procesador dispone de una visioacuten funcional del sistema operativo la organizacioacuten de los registros puede adaptarse convenientementeOtra decisioacuten clave del disentildeo es la asignacioacuten de informacioacuten de control a los registros y la memoria Es habitual dedicar los primeros centenares o miles de palabras (las maacutes bajas) de memoria para el control El disentildeador debe decidir la cantidad de informacioacuten de control que debe residir en los raacutepidos y costosos registros junto a la cantidad que debe permanecer en memoria principal que es maacutes lenta y barata

httpslamiradelsniperwordpresscom20120820registros-del-procesador

1 Los registros

El procesador necesita para su funcionamiento de ciertas aacutereas de almacenamiento que aquiacute se llaman registros y que son de dimensiones miacutenimas [3] sin embargo tienen la ventaja de su rapidez Comparados con los accesos a RAM los de registro son como miacutenimo 10 veces maacutes veloces

El 8088 dispone de catorce registros de 16 bits que se agrupan en cuatro grupos y que reciben nombres especiales (precisamente los que se utilizan para designarlos en lenguaje ensamblador)

sect311 Registros de uso general

Existen 4 registros denominados AX BX CX y DX que en realidad tienen asignados usos caracteriacutesticos aunque pueden ser utilizados a discrecioacuten para cualquier cosa que necesitemos

AX es denominado acumulador suele contener uno de los operandos que intervienen en las operaciones aritmeacuteticas y loacutegicas y despueacutes de esta el resultado de la operacioacuten En general

las instrucciones que trabajan con este registro (o su mitad inferior) tienen un microcoacutedigo maacutes simple que la misma instruccioacuten ejecutada con otro registro

BX es el registro base suele contener la direccioacuten de inicio de una tabla de valores

CX es denominado contador Las instrucciones de bucle (LOOP) utilizan este registro como contador

DX es un registro de datos multiuso Se utiliza en operaciones de multiplicacioacuten y divisioacuten junto con AX En operaciones de entradasalida de puertos INOUT su mitad inferior DL contiene el

nuacutemero de puerto ( 25)

Aunque estos cuatro registros son de 16 bits (como los 10 restantes) [6] en caso necesario pueden ser utilizados en dos mitades (nibbles) High y Low de 8 bits con lo que puede considerarse que existen 12 registros de uso general (no simultaacuteneos) los anteriores y sus mitades AH AL BH BL CH CL DH y DL

sect312 Registros de segmento

Se dispone de cuatro registros que sirven para contener las direcciones de otros tantos segmentos (zonas de 64 KB de memoria) Utilizaacutendolos en conjuncioacuten con otros registros que sentildealan las

direcciones concretas dentro de estos segmentos (los desplazamientos ) permiten manejar la totalidad de la memoria direccionable (el bus de direcciones es de 20 bits) Ver al respecto el epiacutegrafe

Direccionamiento segmentado ( 51)

Segmento de coacutedigo CS (Code segment) Sentildeala la direccioacuten del segmento de coacutedigo del

programa que se estaacute ejecutando ( E132) Segmento de datos DS (Data segment) Sentildeala la direccioacuten del segmento de datos del

programa en ejecucioacuten ( E132) Segmento de pila SS (Stack segment) Sentildeala la direccioacuten del segmento donde estaacute la pila

del programa ( E132) Segmento extra ES (Extra segment) Es un segmento auxiliar a los anteriores se utiliza para

sentildealar espacio extra en alguno de los segmentos o para almacenar momentaacuteneamente direcciones intermedias

Nota Puede ocurrir que programas pequentildeos utilicen el mismo segmento para el coacutedigo los datos y la pila

sect313 Registros de puntero

Son 5 registros destinados a contener direcciones estas direcciones son desplazamientos dentro de los

segmentos indicados por los registros de segmento (ver figura 51 Fig2)

El primero denominado indistintamente puntero de instruccioacuten IP (Instruccioacuten pointer) y contador de programa PC(Program counter) indica el desplazamiento (dentro del segmento de coacutedigo CS) de la proacutexima instruccioacuten a ejecutar

El puntero de pila SP (Stack Pointer) sentildeala el desplazamiento del final de la pila dentro del segmento de pila SS En caso necesario la pila puede crecer a partir de este punto de forma que por ejemplo una nueva invocacioacuten de funcioacuten crearaacute un nuevo registro de activacioacuten que comenzaraacute en este punto

El puntero base BP (Base pointer) sentildeala el desplazamiento (dentro del segmento de pila SS) donde se encuentra el origen de la zona ocupada por las variables dinaacutemicas

Existen dos registros denominados de iacutendice en razoacuten de su utilizacioacuten muy particular el iacutendice fuente SI (Source index) y el iacutendice destino DI (Destination index) Generalmente estos dos registros se utilizan con alguno de los registros de uso general y con ciertas

instrucciones especiacuteficamente pensadas para transferir datos (dentro de un rango de posiciones de memoria) desde un punto inicial de un segmento de datos a otro

Ver en la paacutegina adjunta un ejemplo relativo al uso de punteros ( 32 Ejemplo-2)

sect314 Registro de estado

Existe un registro especial el registro de estado (FLAGS) en el que 9 de los 18 bits actuacutean como semaacuteforos (indicadores del estado del procesador y del resultado de determinadas operaciones) Por ejemplo si despueacutes de una suma aritmeacutetica hay o no desbordamiento del bit maacutes significativo

Los nombres y situacioacuten de cada uno dentro de la palabra de 16 bits se muestran en la figura 2

Cada bits individual puede estar activo (1) o inactivo (0) y tiene un identificador que termina en F(Flag) Son los siguientes

Bit Indicador de Uso

CF Acarreo (Carry Flag)

Indicador de arrastre del bit de mayor orden que puede ocurrir en las operaciones aritmeacuteticas suma y resta

PF Paridad (Parity Flag)

Si estaacute activo Indica un nuacutemero par de bits activos (bits cuyo contenido es 1) Esta informacioacuten es uacutetil cuando el procesador controla transmisiones de datos

AF Acarreo auxiliar Indicador de ajuste en operaciones aritmeacuteticas con cantidades

BCD ( E01w1)

ZF Cero (Zero Flag) Estaacute activo si el resultado de operacioacuten es cero o resultado de comparacioacuten igual

SF Signo (Sign Flag) Si estaacute activo indica que el resultado de operacioacuten o de comparacioacuten son negativos [5]

TF Detencioacuten (Trap Flag)

Si estaacute activo el procesador genera automaacuteticamente una interrupcioacuten despueacutes de la ejecucioacuten de cada instruccioacuten lo que permite controlar paso a paso la ejecucioacuten del programa Este bit debe estar normalmente inactivo (a 0)

IF Interrupcioacuten (Interrupt Flag)

Este bit controla el estado del sistema de interrupciones

enmascarables ( 24) Cuando estaacute activo (1) permite las

interrupciones el estado inactivo (0) las deshabilita

DF Direccioacuten (Direction Flag)

Indica la direccioacuten de las operaciones

OF Desbordamiento (Overflow Flag)

Sentildeala desbordamiento aritmeacutetico

Nota Los usuarios de MS-DOS o Windows puede usar el programa DEBUG ( 171) para inspeccionar y modificar el contenido de los registros de la siguiente forma

Invocar DEBUG desde una ventana DOS (suponemos que estamos en Windows el prompt es un guioacuten -)

introducir el comando R (pedimos que nos muestre el contenido de los registros)

Salir de Debug con Q

En mi PC la respuesta al comando tiene el siguiente aspecto

AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=1779 ES=1779 SS=1779 CS=1779 IP=0100 NV UP EI PL NZ NA PO NC

Los valores estaacuten expresados en hexadecimal La uacuteltima secuencia de caracteres (NV UP EI PL NZ NA PO NC) muestra el contenido del registro de estado (el bit TF de detencioacuten no se muestra) el significado de la notacioacuten utilizada es el siguiente

Bit Indicador de Indicativo si bit 1 Indicativo si bit 0

CF Acarreo CY (Carry yes) NC (No Carry)

PF Paridad PE (Parity Even) paridad par PO (Parity Odd) paridad impar

AF Acarreo auxiliar AC (Auxiliar Carry) NA (No Auxiliar)

ZF Cero ZR (Zero) NZ (No Zero)

SF Signo NG (Negative) negativo PL (Plus) positivo

IF Interrupcioacuten EI (Enabled Interrupt) activa DI (Disabled Interrupt) desactivada

DF Direccioacuten DN (Down) decremento UP incremento

OF Desbordamiento OV (Overflow) NV (No overflow)

Tambieacuten es posible inspeccionar el contenido de un solo registro antildeadiendo al comando R el nombre del registro Por ejemplo el comando R IP muestra el contenido del contador de programa Los nombres que pueden utilizarse para los registros son los siguientes AX BX CX DX SP BP SI DI DS ES SS CS IP y F (este uacuteltimo para el registro de estado)

Despueacutes de un comando de este tipo DEBUG responde con un prompt distinto del habitual para indicar que debe introducir el nuevo valor que desea para el registro Pulsando INTRO se vuelve al modo normal

sect315 Comentario

Observe que tanto el registro contador de programa IP como el de base BP siempre contienen direcciones de memoria (los otros pueden contener direcciones o datos) Ni los registros de segmento ni los de puntero se pueden dividir en mitades (como los de uso general)

httpwwwzatorcomHardwareH3_2htm

Definiciones de registros Definicioacuten 1 un registro es una memoria de alta velocidad y poca capacidad integrada en el microprocesador que permite guardar transitoriamente y acceder a valores muy usados generalmente en operaciones matemaacuteticas Definicioacuten 2 un registro es una porcioacuten de memoria ultrarraacutepida de poca capacidad e integrado al microprocesador que permite almacenar y acceder datos usados frecuentemente Se emplean para aumentar la velocidad de ejecucioacuten de los programas

3 Funcioacuten de los registros Los registros estaacuten en la cumbre de la jerarquiacutea de memoria y son la manera maacutes raacutepida que tiene el sistema de almacenar datos Los registros se miden generalmente por el nuacutemero de bits que almacenan por ejemplo un registro de 8 bits o un registro de 32 bitsldquo La CPU contiene un conjunto de localidades de almacenamiento temporal de datos de alta velocidad llamada registro Algunos de los registros estaacuten dedicados al control y solo la unidad de control tiene acceso a ellos Los registros restantes son los registros de uso general y el programador es el usuario que tiene acceso a ellos

4 Los nombres de los registros describen la forma como algunas instrucciones enensamblador las emplean

5 Algunos registros basicos Dentro del conjunto baacutesico de registros de control se deben incluir a los siguientesa middot Contador de programa (PC)b middot Registro de direcciones de la memoria (MAR)c middot Registro de datos (RD)d middot Registro de instrucciones (IR)e middot Palabra de estado de programa (PSW)

6 Funcioacuten del PC La funcioacuten del PC consiste en seguir la pista de la instruccioacuten por buscar (capturar) en el siguiente ciclo de maquina por lo tanto contiene la direccioacuten de la siguiente instruccioacuten por ejecutar El PC es modificado dentro del ciclo de buacutesqueda de la instruccioacuten actual mediante la suma de una constante El numero que se agrega al PC es la longitud de una instruccioacuten en palabras Por lo tanto si una instruccioacuten tiene una palabra de longitud se agrega 1 al PC si una instruccioacuten tiene dos palabras de largo se agrega 2 y asiacute sucesivamente

7 Funcioacuten de MAR Registro de direcciones de la memoria (MAR) funciona como registro de enlace entre la CPU y el canal de direcciones Cuando se logra el acceso a la memoria la direccioacuten es colocada en el MAR por la unidad de control y ahiacute permanece hasta que se completa la transaccioacuten El numero de bit que hay en el MAR es igual al del canal de direcciones La diferencia que existe entre el PC y el MAR es que durante el ciclo de ejecucioacuten de una instruccioacuten el PC y el MAR sirven al mismo fin Sin embargo muchas de las instrucciones de la maquina hacen referencia a la memoria y operan con los datos que

estaacuten en ella Como la direccioacuten de los datos suele ser diferente de la instruccioacuten siguiente se necesita el MAR

8 Funcioacuten de RD Registro de datos la funcioacuten del RD consiste en proporcionar un aacuterea de almacenamiento temporal (memoria intermedia acumulada o buffer) de datos que se intercambian entre la PCU y la memoria Los datos pueden ser instrucciones (obtenidos en el ciclo de ejecucioacuten) o datos del operando (obtenidos en el ciclo de ejecucioacuten) Debido a su conexioacuten directa con el canal de datos el RD contiene el mismo numero de bit que dicho canal

9 Funcioacuten de IR Registro de instrucciones (IR) es un registro que conserva el coacutedigo de operacioacuten de la instruccioacuten en todo el ciclo de la maquina El coacutedigo es empleado por la unidad de control de la CPU para generar las sentildeales apropiadas que controla le ejecucioacuten de la instruccioacuten La longitud del ER es la longitud en bit del coacutedigo de operacioacuten

10 Funcioacuten de PSW Palabra de estado de programa (PSW) la palabra de estado o condicioacuten de programa almacena informacioacuten pertinente sobre el programa que este ejecutaacutendose Por ejemplo al completarse una funcioacuten de la unidad aritmeacutetica loacutegica se modifica un conjunto de bit llamados coacutedigos (o sentildeales de condicioacuten) Estos bit especifican si el resultado de una operacioacuten aritmeacutetica fue 0 o negativo o si el resultado se desbordoacute Ademaacutes el PSW contiene bit que hacen posible que la computadora responda a solicitudes de servicio asincroacutenicas generadas por dispositivos de Entrada-Salida o condiciones de error interno Estas sentildeales se denominan interrupciones

  • 1 Los registros
  • sect311 Registros de uso general
  • sect312 Registros de segmento
  • sect313 Registros de puntero
  • sect314 Registro de estado
  • sect315 Comentario
Page 10: Registros de procesador.docx

Acarreo Se activa cuando como resultado de una suma o una resta se produce un acarreo maacutes allaacute del bit maacutes significativo Se utiliza en operaciones aritmeacuteticas de maacutes de una palabra

Igualdad Se activa si una comparacioacuten loacutegica da como resultado la igualdad Desbordamiento Empleado para sentildealar un desbordamiento aritmeacutetico Habilitarinhahilitar interrupcioacutenes Empleado para habilitar o inhabilitar interrupciones Cuando Las interrupciones estaacuten

inhabilitadas el procesador las ignora Esto es muy deseable cuando el sistema operativo estaacute ocupado en el tratamiento de otra interrupcioacuten

Supervisor Indica si el procesador estaacute ejecutando en modo supervisor o en modo usuario Ciertas instrucciones privilegiadas soacutelo se pueden ejecutar en modo supervisor y soacutelo se puede tener acceso a ciertas aacutereas de memoria en modo supervisor

En el disentildeo de un procesador especiacutefico se pueden encontrar una serie de registros relacionados con el estado y el control Ademaacutes de la PSW puede haber un puntero a un bloque de memoria que contenga informacioacuten de estado adicional En maacutequinas que utilizan varios tipos de interrupcioacuten se puede ofrecer una serie de registros con punteros a cada rutina de tratamiento de interrupcioacuten Si se utiliza una pila para implementar ciertas funciones (por ejemplo las llamadas a procedimientos) entonces se necesita un puntero a la pila Por uacuteltimo los registros tambieacuten pueden utilizarse para el control de las operaciones de ES Una serie de factores inciden en el disentildeo de la organizacioacuten de los registros de control y estado Un punto clave es el soporte del sistema operativo Cierto tipo de informacioacuten de control es de utilidad especiacutefica para el sistema operativo Si el disentildeador del procesador dispone de una visioacuten funcional del sistema operativo la organizacioacuten de los registros puede adaptarse convenientementeOtra decisioacuten clave del disentildeo es la asignacioacuten de informacioacuten de control a los registros y la memoria Es habitual dedicar los primeros centenares o miles de palabras (las maacutes bajas) de memoria para el control El disentildeador debe decidir la cantidad de informacioacuten de control que debe residir en los raacutepidos y costosos registros junto a la cantidad que debe permanecer en memoria principal que es maacutes lenta y barata

httpslamiradelsniperwordpresscom20120820registros-del-procesador

1 Los registros

El procesador necesita para su funcionamiento de ciertas aacutereas de almacenamiento que aquiacute se llaman registros y que son de dimensiones miacutenimas [3] sin embargo tienen la ventaja de su rapidez Comparados con los accesos a RAM los de registro son como miacutenimo 10 veces maacutes veloces

El 8088 dispone de catorce registros de 16 bits que se agrupan en cuatro grupos y que reciben nombres especiales (precisamente los que se utilizan para designarlos en lenguaje ensamblador)

sect311 Registros de uso general

Existen 4 registros denominados AX BX CX y DX que en realidad tienen asignados usos caracteriacutesticos aunque pueden ser utilizados a discrecioacuten para cualquier cosa que necesitemos

AX es denominado acumulador suele contener uno de los operandos que intervienen en las operaciones aritmeacuteticas y loacutegicas y despueacutes de esta el resultado de la operacioacuten En general

las instrucciones que trabajan con este registro (o su mitad inferior) tienen un microcoacutedigo maacutes simple que la misma instruccioacuten ejecutada con otro registro

BX es el registro base suele contener la direccioacuten de inicio de una tabla de valores

CX es denominado contador Las instrucciones de bucle (LOOP) utilizan este registro como contador

DX es un registro de datos multiuso Se utiliza en operaciones de multiplicacioacuten y divisioacuten junto con AX En operaciones de entradasalida de puertos INOUT su mitad inferior DL contiene el

nuacutemero de puerto ( 25)

Aunque estos cuatro registros son de 16 bits (como los 10 restantes) [6] en caso necesario pueden ser utilizados en dos mitades (nibbles) High y Low de 8 bits con lo que puede considerarse que existen 12 registros de uso general (no simultaacuteneos) los anteriores y sus mitades AH AL BH BL CH CL DH y DL

sect312 Registros de segmento

Se dispone de cuatro registros que sirven para contener las direcciones de otros tantos segmentos (zonas de 64 KB de memoria) Utilizaacutendolos en conjuncioacuten con otros registros que sentildealan las

direcciones concretas dentro de estos segmentos (los desplazamientos ) permiten manejar la totalidad de la memoria direccionable (el bus de direcciones es de 20 bits) Ver al respecto el epiacutegrafe

Direccionamiento segmentado ( 51)

Segmento de coacutedigo CS (Code segment) Sentildeala la direccioacuten del segmento de coacutedigo del

programa que se estaacute ejecutando ( E132) Segmento de datos DS (Data segment) Sentildeala la direccioacuten del segmento de datos del

programa en ejecucioacuten ( E132) Segmento de pila SS (Stack segment) Sentildeala la direccioacuten del segmento donde estaacute la pila

del programa ( E132) Segmento extra ES (Extra segment) Es un segmento auxiliar a los anteriores se utiliza para

sentildealar espacio extra en alguno de los segmentos o para almacenar momentaacuteneamente direcciones intermedias

Nota Puede ocurrir que programas pequentildeos utilicen el mismo segmento para el coacutedigo los datos y la pila

sect313 Registros de puntero

Son 5 registros destinados a contener direcciones estas direcciones son desplazamientos dentro de los

segmentos indicados por los registros de segmento (ver figura 51 Fig2)

El primero denominado indistintamente puntero de instruccioacuten IP (Instruccioacuten pointer) y contador de programa PC(Program counter) indica el desplazamiento (dentro del segmento de coacutedigo CS) de la proacutexima instruccioacuten a ejecutar

El puntero de pila SP (Stack Pointer) sentildeala el desplazamiento del final de la pila dentro del segmento de pila SS En caso necesario la pila puede crecer a partir de este punto de forma que por ejemplo una nueva invocacioacuten de funcioacuten crearaacute un nuevo registro de activacioacuten que comenzaraacute en este punto

El puntero base BP (Base pointer) sentildeala el desplazamiento (dentro del segmento de pila SS) donde se encuentra el origen de la zona ocupada por las variables dinaacutemicas

Existen dos registros denominados de iacutendice en razoacuten de su utilizacioacuten muy particular el iacutendice fuente SI (Source index) y el iacutendice destino DI (Destination index) Generalmente estos dos registros se utilizan con alguno de los registros de uso general y con ciertas

instrucciones especiacuteficamente pensadas para transferir datos (dentro de un rango de posiciones de memoria) desde un punto inicial de un segmento de datos a otro

Ver en la paacutegina adjunta un ejemplo relativo al uso de punteros ( 32 Ejemplo-2)

sect314 Registro de estado

Existe un registro especial el registro de estado (FLAGS) en el que 9 de los 18 bits actuacutean como semaacuteforos (indicadores del estado del procesador y del resultado de determinadas operaciones) Por ejemplo si despueacutes de una suma aritmeacutetica hay o no desbordamiento del bit maacutes significativo

Los nombres y situacioacuten de cada uno dentro de la palabra de 16 bits se muestran en la figura 2

Cada bits individual puede estar activo (1) o inactivo (0) y tiene un identificador que termina en F(Flag) Son los siguientes

Bit Indicador de Uso

CF Acarreo (Carry Flag)

Indicador de arrastre del bit de mayor orden que puede ocurrir en las operaciones aritmeacuteticas suma y resta

PF Paridad (Parity Flag)

Si estaacute activo Indica un nuacutemero par de bits activos (bits cuyo contenido es 1) Esta informacioacuten es uacutetil cuando el procesador controla transmisiones de datos

AF Acarreo auxiliar Indicador de ajuste en operaciones aritmeacuteticas con cantidades

BCD ( E01w1)

ZF Cero (Zero Flag) Estaacute activo si el resultado de operacioacuten es cero o resultado de comparacioacuten igual

SF Signo (Sign Flag) Si estaacute activo indica que el resultado de operacioacuten o de comparacioacuten son negativos [5]

TF Detencioacuten (Trap Flag)

Si estaacute activo el procesador genera automaacuteticamente una interrupcioacuten despueacutes de la ejecucioacuten de cada instruccioacuten lo que permite controlar paso a paso la ejecucioacuten del programa Este bit debe estar normalmente inactivo (a 0)

IF Interrupcioacuten (Interrupt Flag)

Este bit controla el estado del sistema de interrupciones

enmascarables ( 24) Cuando estaacute activo (1) permite las

interrupciones el estado inactivo (0) las deshabilita

DF Direccioacuten (Direction Flag)

Indica la direccioacuten de las operaciones

OF Desbordamiento (Overflow Flag)

Sentildeala desbordamiento aritmeacutetico

Nota Los usuarios de MS-DOS o Windows puede usar el programa DEBUG ( 171) para inspeccionar y modificar el contenido de los registros de la siguiente forma

Invocar DEBUG desde una ventana DOS (suponemos que estamos en Windows el prompt es un guioacuten -)

introducir el comando R (pedimos que nos muestre el contenido de los registros)

Salir de Debug con Q

En mi PC la respuesta al comando tiene el siguiente aspecto

AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=1779 ES=1779 SS=1779 CS=1779 IP=0100 NV UP EI PL NZ NA PO NC

Los valores estaacuten expresados en hexadecimal La uacuteltima secuencia de caracteres (NV UP EI PL NZ NA PO NC) muestra el contenido del registro de estado (el bit TF de detencioacuten no se muestra) el significado de la notacioacuten utilizada es el siguiente

Bit Indicador de Indicativo si bit 1 Indicativo si bit 0

CF Acarreo CY (Carry yes) NC (No Carry)

PF Paridad PE (Parity Even) paridad par PO (Parity Odd) paridad impar

AF Acarreo auxiliar AC (Auxiliar Carry) NA (No Auxiliar)

ZF Cero ZR (Zero) NZ (No Zero)

SF Signo NG (Negative) negativo PL (Plus) positivo

IF Interrupcioacuten EI (Enabled Interrupt) activa DI (Disabled Interrupt) desactivada

DF Direccioacuten DN (Down) decremento UP incremento

OF Desbordamiento OV (Overflow) NV (No overflow)

Tambieacuten es posible inspeccionar el contenido de un solo registro antildeadiendo al comando R el nombre del registro Por ejemplo el comando R IP muestra el contenido del contador de programa Los nombres que pueden utilizarse para los registros son los siguientes AX BX CX DX SP BP SI DI DS ES SS CS IP y F (este uacuteltimo para el registro de estado)

Despueacutes de un comando de este tipo DEBUG responde con un prompt distinto del habitual para indicar que debe introducir el nuevo valor que desea para el registro Pulsando INTRO se vuelve al modo normal

sect315 Comentario

Observe que tanto el registro contador de programa IP como el de base BP siempre contienen direcciones de memoria (los otros pueden contener direcciones o datos) Ni los registros de segmento ni los de puntero se pueden dividir en mitades (como los de uso general)

httpwwwzatorcomHardwareH3_2htm

Definiciones de registros Definicioacuten 1 un registro es una memoria de alta velocidad y poca capacidad integrada en el microprocesador que permite guardar transitoriamente y acceder a valores muy usados generalmente en operaciones matemaacuteticas Definicioacuten 2 un registro es una porcioacuten de memoria ultrarraacutepida de poca capacidad e integrado al microprocesador que permite almacenar y acceder datos usados frecuentemente Se emplean para aumentar la velocidad de ejecucioacuten de los programas

3 Funcioacuten de los registros Los registros estaacuten en la cumbre de la jerarquiacutea de memoria y son la manera maacutes raacutepida que tiene el sistema de almacenar datos Los registros se miden generalmente por el nuacutemero de bits que almacenan por ejemplo un registro de 8 bits o un registro de 32 bitsldquo La CPU contiene un conjunto de localidades de almacenamiento temporal de datos de alta velocidad llamada registro Algunos de los registros estaacuten dedicados al control y solo la unidad de control tiene acceso a ellos Los registros restantes son los registros de uso general y el programador es el usuario que tiene acceso a ellos

4 Los nombres de los registros describen la forma como algunas instrucciones enensamblador las emplean

5 Algunos registros basicos Dentro del conjunto baacutesico de registros de control se deben incluir a los siguientesa middot Contador de programa (PC)b middot Registro de direcciones de la memoria (MAR)c middot Registro de datos (RD)d middot Registro de instrucciones (IR)e middot Palabra de estado de programa (PSW)

6 Funcioacuten del PC La funcioacuten del PC consiste en seguir la pista de la instruccioacuten por buscar (capturar) en el siguiente ciclo de maquina por lo tanto contiene la direccioacuten de la siguiente instruccioacuten por ejecutar El PC es modificado dentro del ciclo de buacutesqueda de la instruccioacuten actual mediante la suma de una constante El numero que se agrega al PC es la longitud de una instruccioacuten en palabras Por lo tanto si una instruccioacuten tiene una palabra de longitud se agrega 1 al PC si una instruccioacuten tiene dos palabras de largo se agrega 2 y asiacute sucesivamente

7 Funcioacuten de MAR Registro de direcciones de la memoria (MAR) funciona como registro de enlace entre la CPU y el canal de direcciones Cuando se logra el acceso a la memoria la direccioacuten es colocada en el MAR por la unidad de control y ahiacute permanece hasta que se completa la transaccioacuten El numero de bit que hay en el MAR es igual al del canal de direcciones La diferencia que existe entre el PC y el MAR es que durante el ciclo de ejecucioacuten de una instruccioacuten el PC y el MAR sirven al mismo fin Sin embargo muchas de las instrucciones de la maquina hacen referencia a la memoria y operan con los datos que

estaacuten en ella Como la direccioacuten de los datos suele ser diferente de la instruccioacuten siguiente se necesita el MAR

8 Funcioacuten de RD Registro de datos la funcioacuten del RD consiste en proporcionar un aacuterea de almacenamiento temporal (memoria intermedia acumulada o buffer) de datos que se intercambian entre la PCU y la memoria Los datos pueden ser instrucciones (obtenidos en el ciclo de ejecucioacuten) o datos del operando (obtenidos en el ciclo de ejecucioacuten) Debido a su conexioacuten directa con el canal de datos el RD contiene el mismo numero de bit que dicho canal

9 Funcioacuten de IR Registro de instrucciones (IR) es un registro que conserva el coacutedigo de operacioacuten de la instruccioacuten en todo el ciclo de la maquina El coacutedigo es empleado por la unidad de control de la CPU para generar las sentildeales apropiadas que controla le ejecucioacuten de la instruccioacuten La longitud del ER es la longitud en bit del coacutedigo de operacioacuten

10 Funcioacuten de PSW Palabra de estado de programa (PSW) la palabra de estado o condicioacuten de programa almacena informacioacuten pertinente sobre el programa que este ejecutaacutendose Por ejemplo al completarse una funcioacuten de la unidad aritmeacutetica loacutegica se modifica un conjunto de bit llamados coacutedigos (o sentildeales de condicioacuten) Estos bit especifican si el resultado de una operacioacuten aritmeacutetica fue 0 o negativo o si el resultado se desbordoacute Ademaacutes el PSW contiene bit que hacen posible que la computadora responda a solicitudes de servicio asincroacutenicas generadas por dispositivos de Entrada-Salida o condiciones de error interno Estas sentildeales se denominan interrupciones

  • 1 Los registros
  • sect311 Registros de uso general
  • sect312 Registros de segmento
  • sect313 Registros de puntero
  • sect314 Registro de estado
  • sect315 Comentario
Page 11: Registros de procesador.docx

CX es denominado contador Las instrucciones de bucle (LOOP) utilizan este registro como contador

DX es un registro de datos multiuso Se utiliza en operaciones de multiplicacioacuten y divisioacuten junto con AX En operaciones de entradasalida de puertos INOUT su mitad inferior DL contiene el

nuacutemero de puerto ( 25)

Aunque estos cuatro registros son de 16 bits (como los 10 restantes) [6] en caso necesario pueden ser utilizados en dos mitades (nibbles) High y Low de 8 bits con lo que puede considerarse que existen 12 registros de uso general (no simultaacuteneos) los anteriores y sus mitades AH AL BH BL CH CL DH y DL

sect312 Registros de segmento

Se dispone de cuatro registros que sirven para contener las direcciones de otros tantos segmentos (zonas de 64 KB de memoria) Utilizaacutendolos en conjuncioacuten con otros registros que sentildealan las

direcciones concretas dentro de estos segmentos (los desplazamientos ) permiten manejar la totalidad de la memoria direccionable (el bus de direcciones es de 20 bits) Ver al respecto el epiacutegrafe

Direccionamiento segmentado ( 51)

Segmento de coacutedigo CS (Code segment) Sentildeala la direccioacuten del segmento de coacutedigo del

programa que se estaacute ejecutando ( E132) Segmento de datos DS (Data segment) Sentildeala la direccioacuten del segmento de datos del

programa en ejecucioacuten ( E132) Segmento de pila SS (Stack segment) Sentildeala la direccioacuten del segmento donde estaacute la pila

del programa ( E132) Segmento extra ES (Extra segment) Es un segmento auxiliar a los anteriores se utiliza para

sentildealar espacio extra en alguno de los segmentos o para almacenar momentaacuteneamente direcciones intermedias

Nota Puede ocurrir que programas pequentildeos utilicen el mismo segmento para el coacutedigo los datos y la pila

sect313 Registros de puntero

Son 5 registros destinados a contener direcciones estas direcciones son desplazamientos dentro de los

segmentos indicados por los registros de segmento (ver figura 51 Fig2)

El primero denominado indistintamente puntero de instruccioacuten IP (Instruccioacuten pointer) y contador de programa PC(Program counter) indica el desplazamiento (dentro del segmento de coacutedigo CS) de la proacutexima instruccioacuten a ejecutar

El puntero de pila SP (Stack Pointer) sentildeala el desplazamiento del final de la pila dentro del segmento de pila SS En caso necesario la pila puede crecer a partir de este punto de forma que por ejemplo una nueva invocacioacuten de funcioacuten crearaacute un nuevo registro de activacioacuten que comenzaraacute en este punto

El puntero base BP (Base pointer) sentildeala el desplazamiento (dentro del segmento de pila SS) donde se encuentra el origen de la zona ocupada por las variables dinaacutemicas

Existen dos registros denominados de iacutendice en razoacuten de su utilizacioacuten muy particular el iacutendice fuente SI (Source index) y el iacutendice destino DI (Destination index) Generalmente estos dos registros se utilizan con alguno de los registros de uso general y con ciertas

instrucciones especiacuteficamente pensadas para transferir datos (dentro de un rango de posiciones de memoria) desde un punto inicial de un segmento de datos a otro

Ver en la paacutegina adjunta un ejemplo relativo al uso de punteros ( 32 Ejemplo-2)

sect314 Registro de estado

Existe un registro especial el registro de estado (FLAGS) en el que 9 de los 18 bits actuacutean como semaacuteforos (indicadores del estado del procesador y del resultado de determinadas operaciones) Por ejemplo si despueacutes de una suma aritmeacutetica hay o no desbordamiento del bit maacutes significativo

Los nombres y situacioacuten de cada uno dentro de la palabra de 16 bits se muestran en la figura 2

Cada bits individual puede estar activo (1) o inactivo (0) y tiene un identificador que termina en F(Flag) Son los siguientes

Bit Indicador de Uso

CF Acarreo (Carry Flag)

Indicador de arrastre del bit de mayor orden que puede ocurrir en las operaciones aritmeacuteticas suma y resta

PF Paridad (Parity Flag)

Si estaacute activo Indica un nuacutemero par de bits activos (bits cuyo contenido es 1) Esta informacioacuten es uacutetil cuando el procesador controla transmisiones de datos

AF Acarreo auxiliar Indicador de ajuste en operaciones aritmeacuteticas con cantidades

BCD ( E01w1)

ZF Cero (Zero Flag) Estaacute activo si el resultado de operacioacuten es cero o resultado de comparacioacuten igual

SF Signo (Sign Flag) Si estaacute activo indica que el resultado de operacioacuten o de comparacioacuten son negativos [5]

TF Detencioacuten (Trap Flag)

Si estaacute activo el procesador genera automaacuteticamente una interrupcioacuten despueacutes de la ejecucioacuten de cada instruccioacuten lo que permite controlar paso a paso la ejecucioacuten del programa Este bit debe estar normalmente inactivo (a 0)

IF Interrupcioacuten (Interrupt Flag)

Este bit controla el estado del sistema de interrupciones

enmascarables ( 24) Cuando estaacute activo (1) permite las

interrupciones el estado inactivo (0) las deshabilita

DF Direccioacuten (Direction Flag)

Indica la direccioacuten de las operaciones

OF Desbordamiento (Overflow Flag)

Sentildeala desbordamiento aritmeacutetico

Nota Los usuarios de MS-DOS o Windows puede usar el programa DEBUG ( 171) para inspeccionar y modificar el contenido de los registros de la siguiente forma

Invocar DEBUG desde una ventana DOS (suponemos que estamos en Windows el prompt es un guioacuten -)

introducir el comando R (pedimos que nos muestre el contenido de los registros)

Salir de Debug con Q

En mi PC la respuesta al comando tiene el siguiente aspecto

AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=1779 ES=1779 SS=1779 CS=1779 IP=0100 NV UP EI PL NZ NA PO NC

Los valores estaacuten expresados en hexadecimal La uacuteltima secuencia de caracteres (NV UP EI PL NZ NA PO NC) muestra el contenido del registro de estado (el bit TF de detencioacuten no se muestra) el significado de la notacioacuten utilizada es el siguiente

Bit Indicador de Indicativo si bit 1 Indicativo si bit 0

CF Acarreo CY (Carry yes) NC (No Carry)

PF Paridad PE (Parity Even) paridad par PO (Parity Odd) paridad impar

AF Acarreo auxiliar AC (Auxiliar Carry) NA (No Auxiliar)

ZF Cero ZR (Zero) NZ (No Zero)

SF Signo NG (Negative) negativo PL (Plus) positivo

IF Interrupcioacuten EI (Enabled Interrupt) activa DI (Disabled Interrupt) desactivada

DF Direccioacuten DN (Down) decremento UP incremento

OF Desbordamiento OV (Overflow) NV (No overflow)

Tambieacuten es posible inspeccionar el contenido de un solo registro antildeadiendo al comando R el nombre del registro Por ejemplo el comando R IP muestra el contenido del contador de programa Los nombres que pueden utilizarse para los registros son los siguientes AX BX CX DX SP BP SI DI DS ES SS CS IP y F (este uacuteltimo para el registro de estado)

Despueacutes de un comando de este tipo DEBUG responde con un prompt distinto del habitual para indicar que debe introducir el nuevo valor que desea para el registro Pulsando INTRO se vuelve al modo normal

sect315 Comentario

Observe que tanto el registro contador de programa IP como el de base BP siempre contienen direcciones de memoria (los otros pueden contener direcciones o datos) Ni los registros de segmento ni los de puntero se pueden dividir en mitades (como los de uso general)

httpwwwzatorcomHardwareH3_2htm

Definiciones de registros Definicioacuten 1 un registro es una memoria de alta velocidad y poca capacidad integrada en el microprocesador que permite guardar transitoriamente y acceder a valores muy usados generalmente en operaciones matemaacuteticas Definicioacuten 2 un registro es una porcioacuten de memoria ultrarraacutepida de poca capacidad e integrado al microprocesador que permite almacenar y acceder datos usados frecuentemente Se emplean para aumentar la velocidad de ejecucioacuten de los programas

3 Funcioacuten de los registros Los registros estaacuten en la cumbre de la jerarquiacutea de memoria y son la manera maacutes raacutepida que tiene el sistema de almacenar datos Los registros se miden generalmente por el nuacutemero de bits que almacenan por ejemplo un registro de 8 bits o un registro de 32 bitsldquo La CPU contiene un conjunto de localidades de almacenamiento temporal de datos de alta velocidad llamada registro Algunos de los registros estaacuten dedicados al control y solo la unidad de control tiene acceso a ellos Los registros restantes son los registros de uso general y el programador es el usuario que tiene acceso a ellos

4 Los nombres de los registros describen la forma como algunas instrucciones enensamblador las emplean

5 Algunos registros basicos Dentro del conjunto baacutesico de registros de control se deben incluir a los siguientesa middot Contador de programa (PC)b middot Registro de direcciones de la memoria (MAR)c middot Registro de datos (RD)d middot Registro de instrucciones (IR)e middot Palabra de estado de programa (PSW)

6 Funcioacuten del PC La funcioacuten del PC consiste en seguir la pista de la instruccioacuten por buscar (capturar) en el siguiente ciclo de maquina por lo tanto contiene la direccioacuten de la siguiente instruccioacuten por ejecutar El PC es modificado dentro del ciclo de buacutesqueda de la instruccioacuten actual mediante la suma de una constante El numero que se agrega al PC es la longitud de una instruccioacuten en palabras Por lo tanto si una instruccioacuten tiene una palabra de longitud se agrega 1 al PC si una instruccioacuten tiene dos palabras de largo se agrega 2 y asiacute sucesivamente

7 Funcioacuten de MAR Registro de direcciones de la memoria (MAR) funciona como registro de enlace entre la CPU y el canal de direcciones Cuando se logra el acceso a la memoria la direccioacuten es colocada en el MAR por la unidad de control y ahiacute permanece hasta que se completa la transaccioacuten El numero de bit que hay en el MAR es igual al del canal de direcciones La diferencia que existe entre el PC y el MAR es que durante el ciclo de ejecucioacuten de una instruccioacuten el PC y el MAR sirven al mismo fin Sin embargo muchas de las instrucciones de la maquina hacen referencia a la memoria y operan con los datos que

estaacuten en ella Como la direccioacuten de los datos suele ser diferente de la instruccioacuten siguiente se necesita el MAR

8 Funcioacuten de RD Registro de datos la funcioacuten del RD consiste en proporcionar un aacuterea de almacenamiento temporal (memoria intermedia acumulada o buffer) de datos que se intercambian entre la PCU y la memoria Los datos pueden ser instrucciones (obtenidos en el ciclo de ejecucioacuten) o datos del operando (obtenidos en el ciclo de ejecucioacuten) Debido a su conexioacuten directa con el canal de datos el RD contiene el mismo numero de bit que dicho canal

9 Funcioacuten de IR Registro de instrucciones (IR) es un registro que conserva el coacutedigo de operacioacuten de la instruccioacuten en todo el ciclo de la maquina El coacutedigo es empleado por la unidad de control de la CPU para generar las sentildeales apropiadas que controla le ejecucioacuten de la instruccioacuten La longitud del ER es la longitud en bit del coacutedigo de operacioacuten

10 Funcioacuten de PSW Palabra de estado de programa (PSW) la palabra de estado o condicioacuten de programa almacena informacioacuten pertinente sobre el programa que este ejecutaacutendose Por ejemplo al completarse una funcioacuten de la unidad aritmeacutetica loacutegica se modifica un conjunto de bit llamados coacutedigos (o sentildeales de condicioacuten) Estos bit especifican si el resultado de una operacioacuten aritmeacutetica fue 0 o negativo o si el resultado se desbordoacute Ademaacutes el PSW contiene bit que hacen posible que la computadora responda a solicitudes de servicio asincroacutenicas generadas por dispositivos de Entrada-Salida o condiciones de error interno Estas sentildeales se denominan interrupciones

  • 1 Los registros
  • sect311 Registros de uso general
  • sect312 Registros de segmento
  • sect313 Registros de puntero
  • sect314 Registro de estado
  • sect315 Comentario
Page 12: Registros de procesador.docx

instrucciones especiacuteficamente pensadas para transferir datos (dentro de un rango de posiciones de memoria) desde un punto inicial de un segmento de datos a otro

Ver en la paacutegina adjunta un ejemplo relativo al uso de punteros ( 32 Ejemplo-2)

sect314 Registro de estado

Existe un registro especial el registro de estado (FLAGS) en el que 9 de los 18 bits actuacutean como semaacuteforos (indicadores del estado del procesador y del resultado de determinadas operaciones) Por ejemplo si despueacutes de una suma aritmeacutetica hay o no desbordamiento del bit maacutes significativo

Los nombres y situacioacuten de cada uno dentro de la palabra de 16 bits se muestran en la figura 2

Cada bits individual puede estar activo (1) o inactivo (0) y tiene un identificador que termina en F(Flag) Son los siguientes

Bit Indicador de Uso

CF Acarreo (Carry Flag)

Indicador de arrastre del bit de mayor orden que puede ocurrir en las operaciones aritmeacuteticas suma y resta

PF Paridad (Parity Flag)

Si estaacute activo Indica un nuacutemero par de bits activos (bits cuyo contenido es 1) Esta informacioacuten es uacutetil cuando el procesador controla transmisiones de datos

AF Acarreo auxiliar Indicador de ajuste en operaciones aritmeacuteticas con cantidades

BCD ( E01w1)

ZF Cero (Zero Flag) Estaacute activo si el resultado de operacioacuten es cero o resultado de comparacioacuten igual

SF Signo (Sign Flag) Si estaacute activo indica que el resultado de operacioacuten o de comparacioacuten son negativos [5]

TF Detencioacuten (Trap Flag)

Si estaacute activo el procesador genera automaacuteticamente una interrupcioacuten despueacutes de la ejecucioacuten de cada instruccioacuten lo que permite controlar paso a paso la ejecucioacuten del programa Este bit debe estar normalmente inactivo (a 0)

IF Interrupcioacuten (Interrupt Flag)

Este bit controla el estado del sistema de interrupciones

enmascarables ( 24) Cuando estaacute activo (1) permite las

interrupciones el estado inactivo (0) las deshabilita

DF Direccioacuten (Direction Flag)

Indica la direccioacuten de las operaciones

OF Desbordamiento (Overflow Flag)

Sentildeala desbordamiento aritmeacutetico

Nota Los usuarios de MS-DOS o Windows puede usar el programa DEBUG ( 171) para inspeccionar y modificar el contenido de los registros de la siguiente forma

Invocar DEBUG desde una ventana DOS (suponemos que estamos en Windows el prompt es un guioacuten -)

introducir el comando R (pedimos que nos muestre el contenido de los registros)

Salir de Debug con Q

En mi PC la respuesta al comando tiene el siguiente aspecto

AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=1779 ES=1779 SS=1779 CS=1779 IP=0100 NV UP EI PL NZ NA PO NC

Los valores estaacuten expresados en hexadecimal La uacuteltima secuencia de caracteres (NV UP EI PL NZ NA PO NC) muestra el contenido del registro de estado (el bit TF de detencioacuten no se muestra) el significado de la notacioacuten utilizada es el siguiente

Bit Indicador de Indicativo si bit 1 Indicativo si bit 0

CF Acarreo CY (Carry yes) NC (No Carry)

PF Paridad PE (Parity Even) paridad par PO (Parity Odd) paridad impar

AF Acarreo auxiliar AC (Auxiliar Carry) NA (No Auxiliar)

ZF Cero ZR (Zero) NZ (No Zero)

SF Signo NG (Negative) negativo PL (Plus) positivo

IF Interrupcioacuten EI (Enabled Interrupt) activa DI (Disabled Interrupt) desactivada

DF Direccioacuten DN (Down) decremento UP incremento

OF Desbordamiento OV (Overflow) NV (No overflow)

Tambieacuten es posible inspeccionar el contenido de un solo registro antildeadiendo al comando R el nombre del registro Por ejemplo el comando R IP muestra el contenido del contador de programa Los nombres que pueden utilizarse para los registros son los siguientes AX BX CX DX SP BP SI DI DS ES SS CS IP y F (este uacuteltimo para el registro de estado)

Despueacutes de un comando de este tipo DEBUG responde con un prompt distinto del habitual para indicar que debe introducir el nuevo valor que desea para el registro Pulsando INTRO se vuelve al modo normal

sect315 Comentario

Observe que tanto el registro contador de programa IP como el de base BP siempre contienen direcciones de memoria (los otros pueden contener direcciones o datos) Ni los registros de segmento ni los de puntero se pueden dividir en mitades (como los de uso general)

httpwwwzatorcomHardwareH3_2htm

Definiciones de registros Definicioacuten 1 un registro es una memoria de alta velocidad y poca capacidad integrada en el microprocesador que permite guardar transitoriamente y acceder a valores muy usados generalmente en operaciones matemaacuteticas Definicioacuten 2 un registro es una porcioacuten de memoria ultrarraacutepida de poca capacidad e integrado al microprocesador que permite almacenar y acceder datos usados frecuentemente Se emplean para aumentar la velocidad de ejecucioacuten de los programas

3 Funcioacuten de los registros Los registros estaacuten en la cumbre de la jerarquiacutea de memoria y son la manera maacutes raacutepida que tiene el sistema de almacenar datos Los registros se miden generalmente por el nuacutemero de bits que almacenan por ejemplo un registro de 8 bits o un registro de 32 bitsldquo La CPU contiene un conjunto de localidades de almacenamiento temporal de datos de alta velocidad llamada registro Algunos de los registros estaacuten dedicados al control y solo la unidad de control tiene acceso a ellos Los registros restantes son los registros de uso general y el programador es el usuario que tiene acceso a ellos

4 Los nombres de los registros describen la forma como algunas instrucciones enensamblador las emplean

5 Algunos registros basicos Dentro del conjunto baacutesico de registros de control se deben incluir a los siguientesa middot Contador de programa (PC)b middot Registro de direcciones de la memoria (MAR)c middot Registro de datos (RD)d middot Registro de instrucciones (IR)e middot Palabra de estado de programa (PSW)

6 Funcioacuten del PC La funcioacuten del PC consiste en seguir la pista de la instruccioacuten por buscar (capturar) en el siguiente ciclo de maquina por lo tanto contiene la direccioacuten de la siguiente instruccioacuten por ejecutar El PC es modificado dentro del ciclo de buacutesqueda de la instruccioacuten actual mediante la suma de una constante El numero que se agrega al PC es la longitud de una instruccioacuten en palabras Por lo tanto si una instruccioacuten tiene una palabra de longitud se agrega 1 al PC si una instruccioacuten tiene dos palabras de largo se agrega 2 y asiacute sucesivamente

7 Funcioacuten de MAR Registro de direcciones de la memoria (MAR) funciona como registro de enlace entre la CPU y el canal de direcciones Cuando se logra el acceso a la memoria la direccioacuten es colocada en el MAR por la unidad de control y ahiacute permanece hasta que se completa la transaccioacuten El numero de bit que hay en el MAR es igual al del canal de direcciones La diferencia que existe entre el PC y el MAR es que durante el ciclo de ejecucioacuten de una instruccioacuten el PC y el MAR sirven al mismo fin Sin embargo muchas de las instrucciones de la maquina hacen referencia a la memoria y operan con los datos que

estaacuten en ella Como la direccioacuten de los datos suele ser diferente de la instruccioacuten siguiente se necesita el MAR

8 Funcioacuten de RD Registro de datos la funcioacuten del RD consiste en proporcionar un aacuterea de almacenamiento temporal (memoria intermedia acumulada o buffer) de datos que se intercambian entre la PCU y la memoria Los datos pueden ser instrucciones (obtenidos en el ciclo de ejecucioacuten) o datos del operando (obtenidos en el ciclo de ejecucioacuten) Debido a su conexioacuten directa con el canal de datos el RD contiene el mismo numero de bit que dicho canal

9 Funcioacuten de IR Registro de instrucciones (IR) es un registro que conserva el coacutedigo de operacioacuten de la instruccioacuten en todo el ciclo de la maquina El coacutedigo es empleado por la unidad de control de la CPU para generar las sentildeales apropiadas que controla le ejecucioacuten de la instruccioacuten La longitud del ER es la longitud en bit del coacutedigo de operacioacuten

10 Funcioacuten de PSW Palabra de estado de programa (PSW) la palabra de estado o condicioacuten de programa almacena informacioacuten pertinente sobre el programa que este ejecutaacutendose Por ejemplo al completarse una funcioacuten de la unidad aritmeacutetica loacutegica se modifica un conjunto de bit llamados coacutedigos (o sentildeales de condicioacuten) Estos bit especifican si el resultado de una operacioacuten aritmeacutetica fue 0 o negativo o si el resultado se desbordoacute Ademaacutes el PSW contiene bit que hacen posible que la computadora responda a solicitudes de servicio asincroacutenicas generadas por dispositivos de Entrada-Salida o condiciones de error interno Estas sentildeales se denominan interrupciones

  • 1 Los registros
  • sect311 Registros de uso general
  • sect312 Registros de segmento
  • sect313 Registros de puntero
  • sect314 Registro de estado
  • sect315 Comentario
Page 13: Registros de procesador.docx

interrupciones el estado inactivo (0) las deshabilita

DF Direccioacuten (Direction Flag)

Indica la direccioacuten de las operaciones

OF Desbordamiento (Overflow Flag)

Sentildeala desbordamiento aritmeacutetico

Nota Los usuarios de MS-DOS o Windows puede usar el programa DEBUG ( 171) para inspeccionar y modificar el contenido de los registros de la siguiente forma

Invocar DEBUG desde una ventana DOS (suponemos que estamos en Windows el prompt es un guioacuten -)

introducir el comando R (pedimos que nos muestre el contenido de los registros)

Salir de Debug con Q

En mi PC la respuesta al comando tiene el siguiente aspecto

AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=1779 ES=1779 SS=1779 CS=1779 IP=0100 NV UP EI PL NZ NA PO NC

Los valores estaacuten expresados en hexadecimal La uacuteltima secuencia de caracteres (NV UP EI PL NZ NA PO NC) muestra el contenido del registro de estado (el bit TF de detencioacuten no se muestra) el significado de la notacioacuten utilizada es el siguiente

Bit Indicador de Indicativo si bit 1 Indicativo si bit 0

CF Acarreo CY (Carry yes) NC (No Carry)

PF Paridad PE (Parity Even) paridad par PO (Parity Odd) paridad impar

AF Acarreo auxiliar AC (Auxiliar Carry) NA (No Auxiliar)

ZF Cero ZR (Zero) NZ (No Zero)

SF Signo NG (Negative) negativo PL (Plus) positivo

IF Interrupcioacuten EI (Enabled Interrupt) activa DI (Disabled Interrupt) desactivada

DF Direccioacuten DN (Down) decremento UP incremento

OF Desbordamiento OV (Overflow) NV (No overflow)

Tambieacuten es posible inspeccionar el contenido de un solo registro antildeadiendo al comando R el nombre del registro Por ejemplo el comando R IP muestra el contenido del contador de programa Los nombres que pueden utilizarse para los registros son los siguientes AX BX CX DX SP BP SI DI DS ES SS CS IP y F (este uacuteltimo para el registro de estado)

Despueacutes de un comando de este tipo DEBUG responde con un prompt distinto del habitual para indicar que debe introducir el nuevo valor que desea para el registro Pulsando INTRO se vuelve al modo normal

sect315 Comentario

Observe que tanto el registro contador de programa IP como el de base BP siempre contienen direcciones de memoria (los otros pueden contener direcciones o datos) Ni los registros de segmento ni los de puntero se pueden dividir en mitades (como los de uso general)

httpwwwzatorcomHardwareH3_2htm

Definiciones de registros Definicioacuten 1 un registro es una memoria de alta velocidad y poca capacidad integrada en el microprocesador que permite guardar transitoriamente y acceder a valores muy usados generalmente en operaciones matemaacuteticas Definicioacuten 2 un registro es una porcioacuten de memoria ultrarraacutepida de poca capacidad e integrado al microprocesador que permite almacenar y acceder datos usados frecuentemente Se emplean para aumentar la velocidad de ejecucioacuten de los programas

3 Funcioacuten de los registros Los registros estaacuten en la cumbre de la jerarquiacutea de memoria y son la manera maacutes raacutepida que tiene el sistema de almacenar datos Los registros se miden generalmente por el nuacutemero de bits que almacenan por ejemplo un registro de 8 bits o un registro de 32 bitsldquo La CPU contiene un conjunto de localidades de almacenamiento temporal de datos de alta velocidad llamada registro Algunos de los registros estaacuten dedicados al control y solo la unidad de control tiene acceso a ellos Los registros restantes son los registros de uso general y el programador es el usuario que tiene acceso a ellos

4 Los nombres de los registros describen la forma como algunas instrucciones enensamblador las emplean

5 Algunos registros basicos Dentro del conjunto baacutesico de registros de control se deben incluir a los siguientesa middot Contador de programa (PC)b middot Registro de direcciones de la memoria (MAR)c middot Registro de datos (RD)d middot Registro de instrucciones (IR)e middot Palabra de estado de programa (PSW)

6 Funcioacuten del PC La funcioacuten del PC consiste en seguir la pista de la instruccioacuten por buscar (capturar) en el siguiente ciclo de maquina por lo tanto contiene la direccioacuten de la siguiente instruccioacuten por ejecutar El PC es modificado dentro del ciclo de buacutesqueda de la instruccioacuten actual mediante la suma de una constante El numero que se agrega al PC es la longitud de una instruccioacuten en palabras Por lo tanto si una instruccioacuten tiene una palabra de longitud se agrega 1 al PC si una instruccioacuten tiene dos palabras de largo se agrega 2 y asiacute sucesivamente

7 Funcioacuten de MAR Registro de direcciones de la memoria (MAR) funciona como registro de enlace entre la CPU y el canal de direcciones Cuando se logra el acceso a la memoria la direccioacuten es colocada en el MAR por la unidad de control y ahiacute permanece hasta que se completa la transaccioacuten El numero de bit que hay en el MAR es igual al del canal de direcciones La diferencia que existe entre el PC y el MAR es que durante el ciclo de ejecucioacuten de una instruccioacuten el PC y el MAR sirven al mismo fin Sin embargo muchas de las instrucciones de la maquina hacen referencia a la memoria y operan con los datos que

estaacuten en ella Como la direccioacuten de los datos suele ser diferente de la instruccioacuten siguiente se necesita el MAR

8 Funcioacuten de RD Registro de datos la funcioacuten del RD consiste en proporcionar un aacuterea de almacenamiento temporal (memoria intermedia acumulada o buffer) de datos que se intercambian entre la PCU y la memoria Los datos pueden ser instrucciones (obtenidos en el ciclo de ejecucioacuten) o datos del operando (obtenidos en el ciclo de ejecucioacuten) Debido a su conexioacuten directa con el canal de datos el RD contiene el mismo numero de bit que dicho canal

9 Funcioacuten de IR Registro de instrucciones (IR) es un registro que conserva el coacutedigo de operacioacuten de la instruccioacuten en todo el ciclo de la maquina El coacutedigo es empleado por la unidad de control de la CPU para generar las sentildeales apropiadas que controla le ejecucioacuten de la instruccioacuten La longitud del ER es la longitud en bit del coacutedigo de operacioacuten

10 Funcioacuten de PSW Palabra de estado de programa (PSW) la palabra de estado o condicioacuten de programa almacena informacioacuten pertinente sobre el programa que este ejecutaacutendose Por ejemplo al completarse una funcioacuten de la unidad aritmeacutetica loacutegica se modifica un conjunto de bit llamados coacutedigos (o sentildeales de condicioacuten) Estos bit especifican si el resultado de una operacioacuten aritmeacutetica fue 0 o negativo o si el resultado se desbordoacute Ademaacutes el PSW contiene bit que hacen posible que la computadora responda a solicitudes de servicio asincroacutenicas generadas por dispositivos de Entrada-Salida o condiciones de error interno Estas sentildeales se denominan interrupciones

  • 1 Los registros
  • sect311 Registros de uso general
  • sect312 Registros de segmento
  • sect313 Registros de puntero
  • sect314 Registro de estado
  • sect315 Comentario
Page 14: Registros de procesador.docx

Tambieacuten es posible inspeccionar el contenido de un solo registro antildeadiendo al comando R el nombre del registro Por ejemplo el comando R IP muestra el contenido del contador de programa Los nombres que pueden utilizarse para los registros son los siguientes AX BX CX DX SP BP SI DI DS ES SS CS IP y F (este uacuteltimo para el registro de estado)

Despueacutes de un comando de este tipo DEBUG responde con un prompt distinto del habitual para indicar que debe introducir el nuevo valor que desea para el registro Pulsando INTRO se vuelve al modo normal

sect315 Comentario

Observe que tanto el registro contador de programa IP como el de base BP siempre contienen direcciones de memoria (los otros pueden contener direcciones o datos) Ni los registros de segmento ni los de puntero se pueden dividir en mitades (como los de uso general)

httpwwwzatorcomHardwareH3_2htm

Definiciones de registros Definicioacuten 1 un registro es una memoria de alta velocidad y poca capacidad integrada en el microprocesador que permite guardar transitoriamente y acceder a valores muy usados generalmente en operaciones matemaacuteticas Definicioacuten 2 un registro es una porcioacuten de memoria ultrarraacutepida de poca capacidad e integrado al microprocesador que permite almacenar y acceder datos usados frecuentemente Se emplean para aumentar la velocidad de ejecucioacuten de los programas

3 Funcioacuten de los registros Los registros estaacuten en la cumbre de la jerarquiacutea de memoria y son la manera maacutes raacutepida que tiene el sistema de almacenar datos Los registros se miden generalmente por el nuacutemero de bits que almacenan por ejemplo un registro de 8 bits o un registro de 32 bitsldquo La CPU contiene un conjunto de localidades de almacenamiento temporal de datos de alta velocidad llamada registro Algunos de los registros estaacuten dedicados al control y solo la unidad de control tiene acceso a ellos Los registros restantes son los registros de uso general y el programador es el usuario que tiene acceso a ellos

4 Los nombres de los registros describen la forma como algunas instrucciones enensamblador las emplean

5 Algunos registros basicos Dentro del conjunto baacutesico de registros de control se deben incluir a los siguientesa middot Contador de programa (PC)b middot Registro de direcciones de la memoria (MAR)c middot Registro de datos (RD)d middot Registro de instrucciones (IR)e middot Palabra de estado de programa (PSW)

6 Funcioacuten del PC La funcioacuten del PC consiste en seguir la pista de la instruccioacuten por buscar (capturar) en el siguiente ciclo de maquina por lo tanto contiene la direccioacuten de la siguiente instruccioacuten por ejecutar El PC es modificado dentro del ciclo de buacutesqueda de la instruccioacuten actual mediante la suma de una constante El numero que se agrega al PC es la longitud de una instruccioacuten en palabras Por lo tanto si una instruccioacuten tiene una palabra de longitud se agrega 1 al PC si una instruccioacuten tiene dos palabras de largo se agrega 2 y asiacute sucesivamente

7 Funcioacuten de MAR Registro de direcciones de la memoria (MAR) funciona como registro de enlace entre la CPU y el canal de direcciones Cuando se logra el acceso a la memoria la direccioacuten es colocada en el MAR por la unidad de control y ahiacute permanece hasta que se completa la transaccioacuten El numero de bit que hay en el MAR es igual al del canal de direcciones La diferencia que existe entre el PC y el MAR es que durante el ciclo de ejecucioacuten de una instruccioacuten el PC y el MAR sirven al mismo fin Sin embargo muchas de las instrucciones de la maquina hacen referencia a la memoria y operan con los datos que

estaacuten en ella Como la direccioacuten de los datos suele ser diferente de la instruccioacuten siguiente se necesita el MAR

8 Funcioacuten de RD Registro de datos la funcioacuten del RD consiste en proporcionar un aacuterea de almacenamiento temporal (memoria intermedia acumulada o buffer) de datos que se intercambian entre la PCU y la memoria Los datos pueden ser instrucciones (obtenidos en el ciclo de ejecucioacuten) o datos del operando (obtenidos en el ciclo de ejecucioacuten) Debido a su conexioacuten directa con el canal de datos el RD contiene el mismo numero de bit que dicho canal

9 Funcioacuten de IR Registro de instrucciones (IR) es un registro que conserva el coacutedigo de operacioacuten de la instruccioacuten en todo el ciclo de la maquina El coacutedigo es empleado por la unidad de control de la CPU para generar las sentildeales apropiadas que controla le ejecucioacuten de la instruccioacuten La longitud del ER es la longitud en bit del coacutedigo de operacioacuten

10 Funcioacuten de PSW Palabra de estado de programa (PSW) la palabra de estado o condicioacuten de programa almacena informacioacuten pertinente sobre el programa que este ejecutaacutendose Por ejemplo al completarse una funcioacuten de la unidad aritmeacutetica loacutegica se modifica un conjunto de bit llamados coacutedigos (o sentildeales de condicioacuten) Estos bit especifican si el resultado de una operacioacuten aritmeacutetica fue 0 o negativo o si el resultado se desbordoacute Ademaacutes el PSW contiene bit que hacen posible que la computadora responda a solicitudes de servicio asincroacutenicas generadas por dispositivos de Entrada-Salida o condiciones de error interno Estas sentildeales se denominan interrupciones

  • 1 Los registros
  • sect311 Registros de uso general
  • sect312 Registros de segmento
  • sect313 Registros de puntero
  • sect314 Registro de estado
  • sect315 Comentario
Page 15: Registros de procesador.docx

estaacuten en ella Como la direccioacuten de los datos suele ser diferente de la instruccioacuten siguiente se necesita el MAR

8 Funcioacuten de RD Registro de datos la funcioacuten del RD consiste en proporcionar un aacuterea de almacenamiento temporal (memoria intermedia acumulada o buffer) de datos que se intercambian entre la PCU y la memoria Los datos pueden ser instrucciones (obtenidos en el ciclo de ejecucioacuten) o datos del operando (obtenidos en el ciclo de ejecucioacuten) Debido a su conexioacuten directa con el canal de datos el RD contiene el mismo numero de bit que dicho canal

9 Funcioacuten de IR Registro de instrucciones (IR) es un registro que conserva el coacutedigo de operacioacuten de la instruccioacuten en todo el ciclo de la maquina El coacutedigo es empleado por la unidad de control de la CPU para generar las sentildeales apropiadas que controla le ejecucioacuten de la instruccioacuten La longitud del ER es la longitud en bit del coacutedigo de operacioacuten

10 Funcioacuten de PSW Palabra de estado de programa (PSW) la palabra de estado o condicioacuten de programa almacena informacioacuten pertinente sobre el programa que este ejecutaacutendose Por ejemplo al completarse una funcioacuten de la unidad aritmeacutetica loacutegica se modifica un conjunto de bit llamados coacutedigos (o sentildeales de condicioacuten) Estos bit especifican si el resultado de una operacioacuten aritmeacutetica fue 0 o negativo o si el resultado se desbordoacute Ademaacutes el PSW contiene bit que hacen posible que la computadora responda a solicitudes de servicio asincroacutenicas generadas por dispositivos de Entrada-Salida o condiciones de error interno Estas sentildeales se denominan interrupciones

  • 1 Los registros
  • sect311 Registros de uso general
  • sect312 Registros de segmento
  • sect313 Registros de puntero
  • sect314 Registro de estado
  • sect315 Comentario