Академический Документы
Профессиональный Документы
Культура Документы
Anuncios
En microprocesadores, un registro es una porcin de memoria ultrarrpida, de poca capacidad e integrado al microprocesador, que permite almacenar y acceder datos usados frecuentemente. Se emplean para aumentar la velocidad de ejecucin de los programas. La mayora de las arquitecturas de computadora emplean registros, moviendo datos desde la memoria principal hacia los registros, se opera sobre stos, y el resultado es movido nuevamente a la memoria principal. Existen mltiples tipos de registros como ser: * Registro de memoria: almacenan exclusivamente direcciones de memoria. * Registro de datos: almacenan nmeros enteros. * Reigistro de propsito general (GPR o General Purpose Registers): permiten almacenar tanto datos como direcciones. La mayora de las computadoras modernas emplean este tipo de registros. * Registro de coma flotante: almacenan datos en formato de coma flotante. * Registro de constantes: almacenan datos constantes (que no se cambian). * Registro de propsito especfico: almacenan informacin especfica sobre el estado del sistema, como el puntero de pila o el registro de estado.
REGISTROS
Enviado por borjaoscar
Indice 1. Concepto general 2. Registros de segmento. 4. Registros de propsitos generales. 5. Registro ndice. 1. Concepto general Los registros del procesador se emplean para controlar instrucciones en ejecucin, manejar direccionamiento de memoria y proporcionar capacidad aritmtica. Los registros son
espacios fsicos dentro del microprocesador con capacidad de 4 bits hasta 64 bits dependiendo del microprocesador que se emplee. Los registros son direccionables por medio de una vieta, que es una direccin de memoria. Los bits, por conveniencia, se numeran de derecha a izquierda (15,14,13. 3,2,1,0), los registros estn divididos en seis grupos los cuales tienen un fin especifico. Los registros se dividen en:
Registros de segmento Registros de apuntadores de instrucciones Registros apuntadores Registros de propsitos generales Registro ndice Registro de bandera.
2. Registros de segmento. Un registro de segmento se utiliza para alinear en un limite de prrafo o dicho de otra forma codifica la direccin de inicio de cada segmento y su direccin 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. El DOS almacena la direccin inicial del segmento de cdigo de un programa en el registro CS. Esta direccin de segmento, mas un valor de desplazamiento en el registro de apuntado de instruccin (IP), indica la direccin de una instruccin que es buscada para s ejecucin. Para propsito de programacin normal, no e necesita referenciar el registro CS. Registro DS. La direccin inicial de un segmento de datos de programa es almacenada en el registro DS. En trminos sencillos, esta direccin, mas un valor de desplazamiento en una instruccin, genera una referencia a la localidad de un bytes especifico en el segmento de datos. Registro SS. El registro SS permite la colocacin en memoria de una pila, para almacenamiento temporal de direcciones y datos. El DOS almacena la direccin de inicio del segmento de pila de un programa en el registro SS. Esta direccin de segmento, ms 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 propsitos de programacin normal, no se necesita referenciar el registro SS. Registro ES Algunas operaciones con cadenas de caracteres (datos de caracteres) utilizan el registro esta de segmento para manejar el direccionamiento de memoria. En este contexto, el registro ES esta asociado con el registro DI (ndice) . un programa que requiere el uso del registro ES puede inicializarlo con una direccin apropiada. Registros FS y GS. Son registros extra de segmento en los procesadores 80386y posteriores a estos procesadores.
3. Registro Apuntador de instrucciones.(IP) El registro apuntador de instrucciones (IP) de 16 bits contiene el desplazamiento de direccin de la siguiente instruccin que se ejecuta. El registro IP esta asociado con el registro CS en el sentido de que el IP indica la instruccin actual dentro del segmento de cdigo que se esta ejecutando actualmente. En el ejemplo siguiente, el registro CS contiene 25A4[0]H y el IP contiene 412H. Para encontrar la siguiente instruccin que ser ejecutada el procesados combina las direcciones en el CS y el IP as: Segmento de direccin en el registro CS: 25A40H Desplazamiento de direccin en el registro IP: + 412H Direccin de la siguiente instruccin: 25E52H Registros apuntadores. Los registros apuntadores estn asociados con el registro SS y permiten al procesador accesar datos en el segmento de pila los registros apuntadores son dos:
El registro SP El registro BP
Registro SP. El apuntador de pila IP de 16 bits esta asociado con el registro SS y proporciona un valor de desplazamiento que se refiere a la palabra actual que esta siendo procesada en la pila. El ejemplo siguiente el registro SS contiene la direccin de segmento 27B3[0]H y el SP el desplazamiento 312H Para encontrar la palabra actual que esta siendo procesada en la pila el microprocesador combina las direcciones en el SS y el PP: Direccin de segmento en el registro SS: 27B30H Desplazamiento en el registro SP: + 312H Direccin en la Pila: 27E42H
.
27B3[0]H 312H Direccin del segmento SS Desplazamiento del SP Registro BP. El registro BP de 16 bits facilita la referencia de parmetros, los cuales son datos y direcciones transmitidos va lapida. 4. Registros de propsitos generales. Los registros de propsitos generales AX, BX, CX y DX son los caballos de batalla o las herramientas del sistema. Son los nicos en el sentido de que se puede direccionarlos como una palabra o como una parte de un byte. El ultimo byte de la izquierda es la parte "alta", y el ultimo byte de la derecha es la parte "baja" por ejemplo, el registro CX consta de una parte CH (alta) y una parte CL (baja), y usted puede referirse a cualquier parte por si nombre. as instrucciones siguientes mueven ceros a los registros CX, CH y CL respectivamente. Mov CX, 00 Mov CH, 00 Mov CL, 00 Los procesadores 80386 y posteriores permiten el uso de todos registros de propsito general, mas versiones de 32 bits; EAX, EBX y EDCX.
Registros AX. El registro AX, el acumulador principal, es utilizado para operaciones que implican entrada/salida y la mayor parte de la aritmtica. Por ejemplo, las instrucciones para multiplicar, dividir y traducir suponen el uso del AX. Tambin, algunas operaciones generan cdigo ms eficientes si se refiere al AX en lugar de los otros registros. Registro BX. El BX es conocido como el registro base ya que es el nico registro de propsitos generales que pueden ser unos ndices para direccionamiento indexado. Tambin es comn emplear al BX para clculos. Registro CX. El CX es conocido como el registro contador. Puede contener un valor para controlar el nmero de veces que un ciclo se repite o un valor para corrimiento de bits, hacia la derecha o hacia la izquierda. El CX tambin es usado para muchos clculos. Registro DX. El DX es conocido como el registro de datos. Algunas operaciones de entrada/salida requieren su uso, y las operaciones de multiplicacin y divisin con cifras grandes suponen al DX y al AX trabajando juntos. Puede usar los registros de propsitos para suma y resta de cifras de 8, 16, 32 bits. 5. Registro ndice. Los registros SI y DI estn disponibles para direccionamientos indexados y para sumas y restas. Que son la operaciones de punta. Registro SI. El registro ndice de 16 bits es requerido por algunas operaciones con cadenas (de caracteres). En este contexto, el SI est asociado con el registro DS. Los procesadores 80386 y posteriores permiten el uso de un registro ampliado a 32 bits, el ESI. Registro DI. El registro ndice destino tambin es requerido por algunas operaciones con cadenas de caracteres. En este contexto, el Di est asociado con el registro ES. Los procesadores 80386 y posteriores permiten el uso de un registro ampliado a 32 bits, el EDI. Registro de bandera. Los registros de banderas sirven parar indicar el estado actual de la maquina y el resultado del procesamiento, Cuando algunas instrucciones piden comparaciones o clculos aritmticos cambian el estado de las banderas. Las banderas estn en el registro de banderas en las siguientes posiciones: bits 15 14 13 12 11 10 9 8 7 6 5 4321
O D I T S Z A P C
Bandera Las banderas mas comunes son las siguientes: OF (Over flow flag, desbordamiento). Indica el desbordamiento de un bit de orden alto (mas a la izquierda) despus de una operacin aritmtica. DF (Direction flag, Direccion). Designa la direccin hacia la izquierda o hacia la derecha para mover o comparar cadenas de caracteres. IF (Interruption flag, Interrupcion).
Indica que una interrupcin externa, como la entrada desde el teclado sea procesada o ignorada. TF (Trap flag, Trampa). Examina el efecto de una instruccin sobre los registros y la memoria. Los programas depuradores como DEBUG, activan esta bandera de manera que pueda avanzar en la ejecucin de una sola interrupcin a un tiempo. SF (Sign flag, Signo). Contiene el signo resultante de una operacin aritmtica (0=positivo y 1= negativo). ZF (Zero flag, Zero). Indica el resultado de una operacin aritmtica o de comparacin (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 aritmtica especializada PF (Parity flag, Paridad). Indica paridad par o impar de una operacin 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) despus de una operacin aritmtica; tambin lleva el contenido del ultimo bit en una operacin de corrimiento o rotacin. Cuadro Comparativo
TIPOS DE REGISTROS FUNCION
Registros de Segmento
Un registro de segmento tiene 16 bits de longitud y facilita un rea de memoria para el direccionamiento conocida como el segmento actual Este registro esta compuesto por 16 bits y contiene el desplazamiento de la siguiente instruccin que se va a ejecutar. Los procesadores 80386 y posteriores tiene un IP ampliado de 32 bits llamado EIP. 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 automtica estos registros. 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 propsitos general mas sus versiones ampliadas de 32 bits llamados EAX, EBX,ECX y EDX. Sirven para el direccionamiento de indexado y para las operaciones de sumas y restas. 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.
Registros Apuntadores
Registros Indices
Registros de Banderas
Ejemplo De Representacion De Los Registros Despus de haber conceptualizado e interpretado los diferente tipos de registro nos vemos en la necesidad de dar un ejemplo no muy practico pero si muy significativo en el cual se
representan la forma estructurada de un programa en el lenguaje ensamblador y como se utilizan los diferentes termino que hemos investigado vemos que en el programa o en una pequea porcin de l se muestran como se colocan dentro los diferentes tipos registros. TITLE P17HANRD(EXE) Lectura secuencial de registros. .MODEL SMALL .STACK 64 /-----------------------------------------------------------------------------------------,DATA ENDCDE DB 00 ; FIN DEL INDICARDOR DE PROCESO. HANDLE DW ? IOAREA DB 32 DUP( ) OPENMSG DB *** Open error *** 0DH, 0AH PATHNAM DB D:\NAMEFILE.SRT, 0 READMSD DB *** Read error *** 0DH, 0AH ROW DB 00 /--------------------------------------------------------------------------------------------.CODE BEGIN PROC FAR MOV AX,@data ; inicializa MOV DS,AX ; registro de MOV ES,AX ; segmento MOV AX,0600H
Un conjunto de instrucciones o repertorio de instrucciones, juego de instrucciones o ISA (del ingls Instruction Set Architecture, Arquitectura del Conjunto de Instrucciones) es unaespecificacin que detalla las instrucciones que una CPU de un ordenador puede entender y ejecutar, o el conjunto de todos los comandos implementados por un diseo particular de una CPU. El trmino describe los aspectos del procesador generalmente visibles a un programador, incluyendo los tipos de datos nativos, las instrucciones, los registros, la arquitectura de memoria y las interrupciones, entre otros aspectos. Existe principalmente de 3 tipos: CISC (Complex Instruction Set Computer), RISC (Reduced Instruction Set Computer) y SISC (Simple Instruction Set Computing). La arquitectura del conjunto de instrucciones (ISA) se emplea a veces para distinguir este conjunto de caractersticas de la microarquitectura, que son los elementos y tcnicas que se emplean para implementar el conjunto de instrucciones. Entre estos elementos se encuentran las microinstrucciones y los sistemas de cach.
Procesadores con diferentes diseos internos pueden compartir un conjunto de instrucciones; por ejemplo, el Intel Pentium y AMD Athlon implementan versiones casi idnticas del conjunto de instrucciones x86, aunque tienen diseos diferentes.
ndice
[ocultar]
1 El lenguaje mquina 2 Implementacin del conjunto de instrucciones 3 Diseo del conjunto de instrucciones 4 Caractersticas que debe tener un conjunto de instrucciones 5 Tipos de instrucciones y ejemplos 6 Vase tambin
Las operaciones ms complejas se construyen a partir de estas, que(en una mquina Von Neumann) se ejecutan secuencialmente, o segn el control de flujo. Muchas o pocas de las operaciones disponibles incluidas en la mayora de conjuntos son: Desplazamiento Establecer un registro a un valor constante Mover datos desde una posicin de memoria a un registro y viceversa. Esto se realiza para obtener datos para operaciones matemticas y su almacenamiento. Leer y escribir datos desde dispositivos de hardware
Operaciones matemticas Sumar, restar, multiplicar o dividir dos registros y colocar el resultado en alguno de ellos. Realizar operaciones bit a bit, teniendo el AND y el OR de cada bit en un par de registros, o el NOT de cada bit en un registro. Comparar dos valores que se encuentren en registros(por ejemplo, si son iguales o si uno es mayor que otro)
Afectan al flujo de programa Saltar a otra posicin del programa y ejecutar instrucciones all. Saltar a otra posicin si se cumple cierta condicin
Saltar a otra posicin, pero salvando la posicin actual para poder volver (realizar una llamada, por ejemplo call printf)
Algunos ordenadores incluyen instrucciones "complejas". Dichas instrucciones pueden tomar muchas instrucciones en otros equipos. Estas se caracterizan por instrucciones que necesitan varios pasos, como el control de mltiples unidades funcionales. Algunos ejemplos son: Ahorro de registros en la pila Mover grandes bloques de memoria Complejas operaciones and/or con aritmtica de coma flotante, tales como el seno o la raz cuadrada. Instrucciones que combinan ALU con un operando de la memoria ms que de registros.
Un tipo complejo de la instruccin que ha llegado a ser particularmente popular recientemente es SIMD (Single Instruction, Multiple Data), una operacin que realice la misma operacin aritmtica en pedazos mltiples de datos al mismo tiempo. SIMD tienen la capacidad de manipular vectores y matrices grandes en tiempo mnimo. Las instrucciones de SIMD permiten la paralelizacin fcil de los algoritmos implicados comnmente en sonido, imagen, y el proceso video. Varias implementaciones de SIMD se han trado al mercado bajo nombres comerciales tales como MMX, 3DNow! y AltiVec. El diseo de sistemas de instruccin es una edicin compleja. Haba dos etapas en la historia para el microprocesador. El primer era el CISC (Complex Instruction Set Computer) que tena muchas instrucciones diferentes. En los aos 70 IBM hicieron la investigacin y encontraron que muchas instrucciones en el sistema podran ser eliminadas. El resultado era el RISC (Reduced Instruction Set Computer), una arquitectura que utiliza un sistema ms pequeo de instrucciones. Un conjunto de instruccin ms simple puede ofrecer el potencial para velocidades ms altas, tamao reducido del procesador, y consumo de energa reducido. Sin embargo, un conjunto ms complejo puede optimizar operaciones comunes, mejorar memoria/eficiencia de cache, o simplificar la programacin.
hardware emulado. Hoy, es prctica para los vendedores de nuevos ISAs o microarchitectures poner emuladores del software a disposicin de los desarrolladores de programas informticos antes de que la implementacin del hardware est lista. Los detalles de la implementacin tienen una influencia fuerte en las instrucciones particulares seleccionadas para el conjunto de instruccin. Por ejemplo, muchas implementaciones de la instruccin pipline permiten solamente una carga de memoria (load) o almacn en memoria (store) por instruccin, llevando a carga-almacena arquitectura (RISC). Por otro ejemplo, algunas maneras de implementar la instruccin pipline llevaron a una ranura de retardo. La demanda de procesamiento de seal digital de alta velocidad han empujado en el sentido contrario, forzando la implementacin de instruccin de manera particular. Por ejemplo, para realizar los filtros digitales es bastante insuficiente, la instruccin del MAC en un procesador tpico de seal digital (DSP) se debe implementar usando una arquitectura de Harvard que pueda traer una instruccin y dos palabras de datos simultneamente, y requiere un solo ciclo.
Nmero de operandos El conjunto de instrucciones puede ser clasificado por el nmero mximo de operandos explcitamente especificados en las instrucciones. (en los ejemplos que siguen, a, b y c se refieren a celdas de memoria, mientras que reg1 y sucesivos se refieren a los registros de la mquina). 0-operando, tambin llamada mquina de pila: todas las operaciones aritmticas se ejecutan en la parte superior de una o dos posiciones de la pila, push y pop son las instrucciones utilizadas para acceder a la memoria: push a, push b, add, pop c. 1-operando (mquinas de una direccin), tambin llamadas mquinas de acumulador, incluida en la mayora de las primeras computadoras y muchos microcontroladores pequeos: la mayora de instrucciones especifican un operando explcito a la derecha (un registro, una posicin de memoria, o una constante) y un operando a la izquierda: load a, add b, store c. 2-operando la mayora de las mquinas CISC y RISC entran en esta categora: CISC load a, reg1, add reg1, b; store reg1, c RISC - cargas que requieren la memoria explcita, las instrucciones seran: load a,reg1; load b,reg2; add reg1,reg2; store reg2,c 3-operando, permite una mejor reutilizacin de los datos: CISC - bien una sola instruccin: add a, b, c, o ms generalmente: move a,reg1; add reg1,b,c como la mayora de las mquinas se limitan a dos operandos de memoria. RISC - Debido a la gran cantidad de bits necesarios para codificar los tres registros, este esquema no suele estar disponible en los procesadores RISC con pequeas instrucciones de 16 bits: load a,reg1; load b,reg2; add reg1+reg2->reg3; store reg3,c; ms operandos, algunas mquinas CISC permiten una variedad de modos de direccionamiento que permiten ms de 3 operandos (registros o accesos a memoria), como el VAX "POLY", instruccin de evaluacin de polinomio.
Se puede comprobar que para que un conjunto de instrucciones sea completo solo se necesitan cuatro instrucciones: -> escritura
-> mover a la izquierda una posicin y leer -> mover a la derecha una posicin y leer -> parar En esta idea se basan las arquitecturas RISC, no obstante, con este conjunto no se puede conseguir la eficiencia del repertorio de instrucciones por lo que en la prctica el conjunto suele ser ms amplio en aras de conseguir un mejor rendimiento, tanto en uso de recursos como en consumo de tiempo.
Estas operaciones pueden ser: -> registro - registro -> registro - memoria -> memoria - registro -> memoria - memoria Nemotcnicos ms frecuentes: move: copia el contenido de un registro(o memoria) a otro. store: copia el contenido de un registro a memoria. load: copia el contenido de una posicin de memoria a un registro. move block: copia un bloque de datos de una posicin de memoria a otra. move multiple: copia del origen en varias posiciones de memoria. exchange: intercambia el contenido de dos operandos. clear: pone a 0 el destinto. (todos los bits) set: pone a 1 el destino. (todos los bits) push: introduce un dato en la cabecera de la pila. (indicada por el SP) pop: saca un dato de la cabecera de la pila. (indicada por el SP) Instrucciones aritmticas: Son efectuadas por la ALU y suelen cambiar los flags o indicadores de condicin.
add with carry: Suma con acarreo. subtract: Resta. subtract with borrow: Resta teniendo en cuenta el adeudo anterior. increment: incrementa en 1 un valor. decrement: decrementa en 1 un valor. multiply: multiplica. divide: divide. extend: aumenta el operando de tamao. negate: cambia de signo. absolute: valor absoluto.
-> Pueden tener instrucciones para tratar con nmeros en BCD e incluyen operaciones en coma flotante, lo cual se identifica con una 'f' antes del nombre del nemotcnico como por ejemplo: fabsolute Instrucciones de comparacin: Suelen preceder a una instruccin de bifurcacin condicional y modifican los flags. No hay que pensar que las instrucciones de salto condicional dependen de este repertorio, ya que lo nico que hace el salto condicional es consultar los flags y salta si precede, pero no depende de ninguna instruccin de comparacin. (de hecho cualquier operacin aritmtica realizada anteriormente a un salto condicional puede provocar que este "salte").
Nemotcnicos ms frecuentes: compare: Resta los dos operandos pero no almacena el resultado, solo modifica los flags. test: compara un cierto valor especificado con el 0. Instrucciones lgicas: Realizan operaciones booleanas "bit a bit" entre dos operandos. Como las aritmticas tambin modifican los flags.
Nemotcnicos ms frecuentes: and: el "y" lgico. or: el "o inclusivo" lgico. xor: el "o exclusivo" lgico.
not: la negacin lgica. (complemento a 1, no confundir con el cambio de signo "negate" que es el complemento a 2) Instrucciones de Desplazamiento: Pueden ser aritmtico o lgico y pueden incluir o no rotaciones. Pueden ser de izquierda a derecha.
Nemotcnicos ms frecuentes: shift: desplazamiento aritmtico o lgico. rotate: rotacin con o sin acarreo. Instrucciones de bits: Comprueban un bit del operando y su valor lo reflejan en el indicador de cero. Pueden poner un bit a 0 o complementarlo.
Nemotcnicos ms frecuentes: bit test: comprueba un bit. bit clear: comprueba un bit y lo pone a 0. bit set: comprueba un bit y lo pone a 1. Instrucciones de control: Permiten modificar la secuencia normal de ejecucin de un programa, puede hacerse por salto condicional relativo o absoluto.
Se clasifican en cuatro grupos: -> salto incondicional -> salto condicional -> Llamada a subrutinas -> Gestin de las interrupciones saltos: Pueden ser condicionales o incondicionales, se suelen especificar como jump o brantch, y en el caso de los condicionales se suele llamar jcond o bcond donde cond es una o ms letras que indican la condicin que ha de cumplirse para que el salto se produzca.
-> Incondicional: salta sin comprobar ninguna condicin. Nemotcnicos ms frecuentes: jump o brantch -> Condicional: salta si la condicin se cumple. Nemotcnicos ms frecuentes: jcond o bcond Llamadas a subrutinas: Invoca la ejecucin de funciones anteriormente definidas.
Nemotcnicos ms frecuentes: call (llamada) y ret (retorno) Gestin de interrupciones: Se usan para llamar a las rutinas de servicio de interrupcin y esto se puede hacer por hardware o bien por software. Necesita una instruccin similar a
return para retornar al contexto anterior pero restableciendo el estado de la mquina, para no afectar a la aplicacin a la cual se interrumpi (iret). Instrucciones de E/S: Son instrucciones de transferencia salvo que el origen/destino de dicho flujo es un puerto de un dispositivo de E/S. Estas instrucciones pueden darse mediante dos alternativas:
->E/S "mapeada" en memoria: Los perifricos tienen direcciones asignadas de la MP por lo que no se necesitan instrucciones especiales y las operaciones se realizan con las ya vistas, como son: load, store y move. ->E/S independiente: Necesitan unas instrucciones especiales para indicarle al procesador que nos estamos refiriendo al mapa de direcciones de E/S, ya que este mapa y el mapa de memoria son disjuntos. Nemotcnicos ms frecuentes: input o read: Pemite leer informacin de un puerto y trasladarla a memoria principal. output o write: Permite escribir informacin en un puerto de un dispositivo. test i/o: Lee informacin de control de un perifrico. control i/o: Enva informacin de control hacia un perifrico.
Instrucciones de control y miscelneas: Nemotnicos ms frecuentes: halt: Detiene la ejecucin del programa hasta que una interrupcin arranca otro programa. wait: Sirve para deterner la ejecucin de un programa hasta que sucede un determinado evento que no es una interrupcin (otra condicin externa al primer programa). nop: No realiza ninguna operacin, sirve para rellenar huecos en un programa o temporizar esperas. enable: Habilita las interrupciones. disable: Deshabilita las interrupciones. test and set: Se utiliza para la implementacin de la exclusin mutua, esto es, que un procesador no pueda acceder a un determinado recurso que est siendo usado por otro procesador en ese mismo momento.
Se usan como semforos, esto es, se declara una variable entera que tendr el valor 0 si el recurso esta libre y 1 si est siendo utilizado, de manera que si un procesador comprueba y el semforo est en 1 tendr que esperar hasta que este cambie a 0. (1 = s.rojo y 0 = s.verde)
4004, 4040 6800 (Motorola) Alpha (DEC) ARM (Advanced RISC Machines) DLX (John Hennessy y David Patterson) IA-64 (Intel) MIPS (MIPS Computer Systems) PA-RISC (HP) POWER (IBM) PowerPC (Alianza AIM) SPARC (Sun Microsystems) Z8, eZ8, etc. Burroughs B5000/B6000/B7000 series eSi-RISC Mico32 PA-RISC IBM 700/7000 series System/360 y sucesores siguientes compatibles System/370 System/390
z/Architecture Power Architecture PDP-11 SPARC SuperH Tricore Transputer UNIVAC 1100/2200 series VAX x86 IA-32 (i386, Pentium, Athlon) x86-64 (64-bit superset of IA-32) EISC (AE32K)
aritmtica Rama de las matemticas que se ocupa del estudio de los nmeros, sus propiedades y las habilidades necesarias para trabajar con ellos. Existen cuatro operaciones fundamentales en la aritmtica: adicin o suma, sustraccin o resta, multiplicacin y divisin. stas son las bases para desarrollar todas las dems operaciones, como elevacin a
potencias (cuadrado o cubo de un nmero), extraccin de races (cuadrada o cbica), porcentajes, fracciones y razones.
BCD Significa decimal codificado en binario (binary coded decimal) y tambin se conoce por las siglas espaolas CBD. Realmente no es un cdigo de E/S, sino una forma de codificar los smbolos numricos del 0 al 9 que se emplean en varios cdigos de E/S, entre ellos ASCII que explicare mas tarde. BCD divide cada octeto en dos mitades o cuartetos, cada uno de los cuales almacena en binario un cifra. Con este cdigo es muy fcil convertir el binario (b=2) al decimal (b=10). La representacin de un numero decimal en BCD se realiza expresando el digito en su representacin binaria -> 128 en BCD seria = 0001 0010 1000 EBCDIC El cdigo BCD se expandira de este modo: extendido de caracteres decimales codificados en binario para el intercambio de informacin (extended BCD interchange intercode). ES un sistema de codificacin que tiene como objetivo la representacin de caracteres alfanumricos. Es el utilizado por IBM para sus ordenadores de la serie IBM PC. En este sistema de caracteres, cada carcter tiene 8 bits, entonces, al tener 8 podremos representar hasta 2 elevado 8 = 256 caracteres. Sera posible almacenar letras maysculas, caracteres especiales etc para los dispositivos de E/S. ASCII Cdigo estadunidense (para variar) Estndar para el intercambio de la informacin (american standard code for information interchange). Es el recomendado por en ANSI (instituto estadunidense de normas). Utiliza grupos de 7 bits por carcter, permitiendo 2 elevado 7 = 128 caracteres diferentes, lo que es suficiente para el alfabeto con letras maysculas y minsculas y smbolos de una mquina de escribir corriente. Un cdigo ASCII extendido usa 8 bits por carcter, lo que aade otros 128 caracteres posibles. Este juego de cdigos ms amplio permite que se agreguen los smbolos de lenguajes extranjeros y varios smbolos grficos. ASCII es el cdigo ms extendido y es utilizado por sistemas operativos como DOS, Windows, y UNIX. Un ejemplo: todo lo que introducimos en nuestro PC, suponiendo que este bajo un plataforma antes mencionada, o por ejemplo GNU/Linux, seria en cdigo ASCII, claro que eso al procesarlo al ordenador, se pasara a binario en paquetes de 8 bits sea de 1 byte de informacin por carcter.
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 ! # $ % & ' ( ) * + , . / 0 1 2
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
M N O P Q R S T U V W X Y Z [ \ ] ^ _
122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
z { | } ~
167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185
212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
` a b c d e f g h i j k l m n o p q r s t u v w x
141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165
Pt
186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210
231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254
76
121
166
211
Add a comment
o o
2.2.1 Determinando el estado de bits 2.2.2 Extrayendo bits 2.2.3 Apagando bits
2.3 OR
2.3.1 Encendiendo bits 2.3.2 Copiando bits 2.3.3 Procedimiento genrico para copiar un grupo de bits
2.4 XOR
2.4.1 Invirtiendo bits selectivamente 2.4.2 Igualdad y desigualdad de bits 2.4.3 Asignar cero a un registro
2.5 En resumen
3.1.1.1 Moviendo bits 3.1.1.2 Multiplicacin y divisin por 2 , de enteros sin signo
n
4 Vase tambin
A NOT A 0 1 1 0
El NOT forma el complemento a uno de un valor binario dado. En un nmero entero con signo en complemento a dos, el NOT da como resultado el inverso aditivo del nmero menos 1, es decir NOT x = -x - 1. Para obtener el complemento a dos de un nmero, se debe sumar 1 al resultado, dando el negativo del nmero. Esto equivale a un cambio de signo del nmero: +5 se convierte en -5, y -5 se convierte en +5.
Para los enteros sin signo, el complemento bit a bit es la reflexin de espejo del nmero a travs del punto medio del rango del entero. Por ejemplo, para los enteros sin signo de 8 bits, NOT x = 255 - x, para los enteros sin signo de 16 bits, NOT x = 65535 - x, y en general, para los enteros sin signo de n bits, NOT x = (2n - 1) - x.
A B A OR B 0 0 0 1 1 0 1 1 0 1 1 1
Signo: 10000000000000000000000000000000 desplaza el signo 31 posiciones hacia la izquierda Exponente: 01000001100000000000000000000000 desplaza el exponente 23 posiciones hacia la izquierda Parte significativa: 00000000011100000111000000001110 significativa no se mueve, ya est en su lugar
Ahora que tenemos cada parte del nmero en su lugar, las combinamos para empaquetarlas y formar el nmero en su representacin de punto flotante de 32 bits. Para ello usamos el OR: (Resultado final) = (Signo) OR (Exponente) OR (Parte significativa): Signo: 10000000000000000000000000000000 Exponente: 01000001100000000000000000000000 Parte significativa: 00000000011100000111000000001110 Resultado final: 11000001111100000111000000001110 Ya tenemos el nmero en su representacin de punto flotante definitiva.
B donde se van a copiar los que vienen de A recibir los 4 bits menos significativos de A Luego, aclaramos los bits de A que no queremos copiar, dejando solo los bits que queremos copiar: 1011 1100 0110 1100 <-- Valor original del registro A
AND 0000 0000 0000 1111 de A que se quieren copiar = 0000 0000 0000 1100 se desean copiar
<-- Mscara para dejar solo los bits <-- Registro A con solo los bits que
Ahora estamos listos para hacer el OR de A sobre B y combinar los 4 bits menos significativos de A sobre B: 0000 0000 0000 1100 desean copiar OR 1001 0001 1111 0000 los 4 bits que desean copiar = 1001 0001 1111 1100 <-- Registro B con los 4 bits menos significativos de A copiados sobre l Ahora, el registro B tiene copiado los 4 bits menos significativos de A. El resto de los bits de B quedaron intactos. <-- Registro B con un espacio para <-- Registro A con los 4 bits que se
A B A XOR B 0 0 0 1 1 0 1 1 0 1 1 0
A B A XOR B A <> B 0 0 0 1 1 0 1 1 0 1 1 0 0 1 1 0
El XOR puede usarse para saber si los bits correspondientes de dos operandos son iguales o diferentes. Por ejemplo, si tenemos dos operandos, 1000 y 0010 y queremos saber si los bits ms significativos de ambos son iguales procedemos como sigue: 1000 XOR 0010 = 1010 Ahora, cada bit del resultado estar en 0 si el bit correspondiente de los dos operandos son iguales, y en 1 si son diferentes. El bit ms significativo del resultado est en 1 indicando que son diferentes, pero tenemos que aislarlo de los dems con un AND para poder usarlo o tomar una decisin: 1010 AND 1000 = 1000 Ahora lo tenemos aislado en el resultado final, que es diferente de cero indicando que los bits ms significativo de los operandos son diferentes. (resultado anterior) (mscara para aislar el bit ms significativo)
= 1010 = 0011 Apaga el Invierte los bits bit inferior inferior y superior
= Elimina bits
NOT invierte los bits y XOR junto con AND permiten determinar si dos operandos tienen los bits de una determinada posicin iguales o diferentes: NOT 1011 = 0100 invierte todos los bits interesa) = 00010 Determina si los bits de la segunda posicin de los dos operandos son iguales o diferentes 0 = iguales 1 = diferentes 11010 XOR 10100 = 01110 AND 00010 (0 = bit iguales, 1 = bits diferentes) (se filtra el segundo bits, que es el que
Hay dos desplazamientos lgicos (logical shifts). El desplazamiento lgico hacia la izquierda (left shift) y el desplazamiento lgico hacia la derecha (right shift). En el desplazamiento lgico los bits de un registro son desplazados (movidos) una o ms posiciones hacia la derecha o hacia la izquierda. Los bit que salen del registro por un extremo se pierden y en el otro extremo del registro se rellena con un bit cero por cada bit desplazado. Por ejemplo. Si se tiene en un registro de 8 bits el valor 10110011, y se hace un desplazamiento hacia la izquierda de un bit, todos los bits se mueven una posicin hacia la izquierda, el bit de la izquierda se pierde y entra un bit cero de relleno por el lado derecho. En un desplazamiento de un bit hacia la derecha ocurre algo anlogo, el bit de la derecha se pierde y el de la izquierda se rellena con un cero: 10110011 desplazamiento 1 <-- 0110011 <-- 0 01100110 desplazamiento Desplazamiento hacia la izquierda Desplazamiento hacia la derecha 0 --> 1011001 --> 1 01011001 <-- Desplazamiento <-- Bits despus del 10110011 <-- Bits antes del
En determinados procesadores, queda almacenado el ltimo bit que sali con el desplazamiento del registro. En la serie de los procesadores x86dicho bit queda almacenado en el flag del acarreo.
Para empaquetarlos en un solo byte, primero hay que desplazar el hexadecimal ms significativo 4 posiciones hacia la izquierda. (Esto se hace con el desplazamiento lgico hacia la izquierda): 1001 0000 <-- hexadecimal 9, desplazado 4 bits hacia la izquierda
para colocarlo en la posicin correcta dentro del byte Luego, se hace un OR de los dos valores que contienen los dgitos hexadecimales para que queden combinados en un solo byte: 0000 1010 OR 1001 0000 1001 1010 <-- Hexadecimal menos significativo A <-- OR con el hexadecimal ms significativo 9, el cual <-- Byte con los dos hexadecimales empaquetados
ya est en su posicin (hexadecimal 9A) Ahora tenemos un byte con el valor de 1001 1010, el cual tiene los dos dgitos hexadecimales empaquetados.
Se quiere multiplicar el contenido del registro EAX por 10: En las instrucciones de abajo, EAX y EBX son registros del procesador, SHL (shift left), desplaza el registro indicado una posicin (un bit) hacia la izquierda (que equivale a multiplicar por 2), MOV copia el registro de la derecha sobre el registro de la izquierda, y ADD suma el registro de la derecha al registro de la izquierda. SHL EAX, 1 ; EAX = EAX * 2 EAX = 2n ; desplaza a la izquierda el contenido del registro EAX una posicin, ; (multiplica EAX por 2) MOV EBX, EAX ; EBX = EAX EBX = 2n ; copia el registro EAX en EBX, ahora los dos registros tienen 2n SHL EBX, 1 ; EBX = EBX * 2 EBX = 4n ; multiplica EBX por 2, obteniendo 4n SHL EBX, 1 ; EBX = EBX * 2 EBX = 8n ; vuelve a multiplicar EBX por 2, obteniendo 8n ADD EAX, EBX ; EAX = EAX + EBX EAX = 2n + 8n = 10n ; suma EBX (8n) a EAX (2n), ; (ahora EAX tiene el valor original multiplicado por 10)
Los desplazamientos aritmticos son similares a los desplazamientos lgicos, solo que los aritmticos estn pensados para trabajar sobre nmeros enteros con signo en representacin de complemento a dos en lugar de enteros sin signo. Los desplazamientos aritmticos permiten la multiplicacin y la divisin por dos, de nmeros enteros con signo, por una potencia de dos. n Desplazar n bits hacia la izquierda o a la derecha equivale a multiplicar o dividir por 2 , (asumiendo que el valor no hace desbordamiento (overflow o underflow)). El desplazamiento aritmtico hacia la izquierda es exactamente igual al desplazamiento lgico hacia la izquierda. De hecho son dos nombres diferentes para exactamente la misma operacin. Al desplazar los bits una posicin hacia la izquierda es equivalente a una multiplicacin por 2 independientemente de si es un nmero entero con signo o sin signo. En los procesadores x86, el ensamblador tiene dos pnemnicos para el desplazamiento lgico y el aritmtico hacia la izquierda, pero cuando el programa es ensamblado, solo hay un opcode para ambos en la instruccin enlenguaje de mquina. El desplazamiento aritmtico hacia la derecha es diferente al desplazamiento lgico hacia la derecha. En los enteros sin signo, para dividir por 2, se debe usar el desplazamiento lgico, el cual siempre agrega un 0 en el extremo izquierdo por cada desplazamiento de un bit hacia la derecha. En cambio, en los enteros con signo, se debe usar el desplazamiento aritmtico hacia la derecha, el cual copia el bit del signo (el bit ms significativo(MSB)) en el espacio vaco que queda en el extremo izquierdo cada vez que se hace un desplazamiento de un bit hacia la derecha. De esta manera, se divide efectivamente por 2 al entero con signo. Si el entero con signo es positivo, (con el bit del signo igual a 0), se insertar el bit 0 del signo en el extremo izquierdo al desplazar un bit hacia la derecha (igual que el desplazamiento lgico hacia la derecha), pero si es un entero negativo, (con el bit del signo igual a 1), se insertar el bit 1 del bit del signo en el extremo izquierdo. De esta manera, el signo del nmero se preserva con la divisin por 2 y el nmero resultante tiene sentido. Si se insertara un 0 a la izquierda a un nmero negativo (como lo hara el desplazamiento lgico hacia la derecha), en primer lugar, este nmero negativo cambiara de signo a positivo, y en segundo lugar, la interpretacin de los bits restantes no tendran sentido. Estos ejemplos utilizan un registro de 8 bits: 00010111 (Decimal 23) (Desplazamiento aritmtico hacia la izquierda de un nmero positivo) = 00101110 (Decimal 46) (El bit de la izquierda se pierde y un bit 0 se aade a la derecha) 11010111 (Decimal -41) (Desplazamiento aritmtico hacia la izquierda de un nmero negativo) = 10101110 (Decimal -82) (El bit de la izquierda se pierde y un bit 0 se aade a la derecha) 00010111 (Decimal 23) (Desplazamiento aritmtico hacia la derecha de un nmero positivo)
= 00001011 (Decimal 11) (El bit de la derecha se pierde y el bit del signo anterior se conserva en el resultado) 11010111 (Decimal -41) (Desplazamiento aritmtico hacia la derecha de un nmero negativo) = 11101011 (Decimal -21) (El bit de la derecha se pierde y el bit del signo anterior se conserva en el resultado) Si el nmero binario es tratado como complemento a 1, entonces la misma operacin de n desplazamiento hacia la derecha resulta en una divisin por 2 redondeando hacia el cero.
splaz amien to circul ar Otra Desplazamiento o rotacin circular hacia la izquierda Desplazamiento o rotacin circular hacia la derecha forma de desplazamiento es el desplazamiento circular o rotacin de bits. En esta operacin, los bits de un registro son rotados de una manera circular como si los extremos izquierdo y derecho del registro estuvieran conectados. En la rotacin hacia la izquierda, el bit que sale por el extremo izquierdo entrar por el extremo derecho, y viceversa con la rotacin hacia la derecha. Esta operacin es til si es necesario conservar todos los bits existentes, y es frecuentemente usada en criptografa digital.
Rotacin hacia la izquierda a travs del bit del acarreo Rotacin hacia la derecha a travs del bit del acarreo
Rotar a travs del bit del acarreo es similar a la operacin de rotar anterior (rotacin sin acarreo). La diferencia est en que los dos extremos del registro estn unidos entre s a travs del flag del acarreo, el cual queda en medio de ellos. El bit que sale por un extremo va al flag del acarreo, y el bit original que estaba en el flag del acarreo entra al registro por el extremo opuesto. Si se fija el flag del acarreo de antemano, una rotacin simple a travs del acarreo puede simular un desplazamiento lgico o aritmtico de una posicin. Por ejemplo, si el flag del acarreo contiene 0, despus de una rotacin hacia la derecha a travs del flag del acarreo, equivale a un desplazamiento lgico hacia la derecha, y si el flag del acarreo contiene una copia del bit del signo, equivale a un desplazamiento aritmtico hacia la derecha. Por esta razn, algunos microcontroladores tales como los PIC solo tienen las funciones de rotar y rotar a travs del acarreo, y no se preocupan de tener instrucciones de desplazamiento aritmtico o lgico. Rotar a travs del acarreo es especialmente til cuando se hacen desplazamientos en nmeros ms grandes que el tamao nativo de la palabra del procesador, porque si, por por ejemplo, un nmero grande es almacenado en dos registros y se quiere desplazar hacia la derecha un bit, el bit que sale del extremo derecho del registro de la izquierda debe entrar por el extremo izquierdo del registro de la derecha. Con rotacin a travs del acarreo, ese bit es almacenado en el flag del acarreo durante el primer desplazamiento hacia la derecha sobre el registro de la izquierda, listo para ser desplazado al registro de la derecha usando una simple rotacin con acarreo hacia la derecha y sin usar ninguna preparacin extra.