Está en la página 1de 12

OPERAIONES ARITMTIAS T LGIAS EN MIROPROESADORES

Operaciones Aritmticas:

Las operaciones en aritmtica binaria a entera permiten a la CPU realizar clculos con nmeros enteros positivos y negativos con una representacin en complementos a 1 y 2. La mayor parte de las instrucciones aritmticas que se encuentran en cualquier procesador incluyen suma, resta y comparacin. Aunque las operaciones aritmticas se efectan en el sistema binario se puede trabajar con aritmtica decimal codificando los dgitos del 0 al 9 en cdigo BCD. Para poder efectuar operaciones aritmticas con estos nmeros, muchos microprocesadores incluyen una instruccin que ajusta el resultado de la operacin para obtener el resultado decimal correcto. Para esta operacin de ajuste decimal es para la que se emplea el flag de acarreo (suma con acarreo).

1.1

SUMA:

Los microprocesadores normalmente suman un nmero que hay en un registro (acumulador) a un nmero tomado de la memoria o de otro registro y ponen el resultado en el acumulador. 1.1.1 Registro de bandera: Los registros de banderas sirven parar indicar el estado actual de la mquina y el resultado del procesamiento, Cuando algunas instrucciones piden comparaciones o clculos aritmticos cambian el estado de las banderas. Las banderas ms 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, Direccin). Designa la direccin hacia la izquierda o hacia la derecha para mover o comparar cadenas de caracteres.

OPERAIONES ARITMTIAS T LGIAS EN MIROPROESADORES

IF (Interruption flag, Interrupcin). 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 ms alto (mas a la izquierda) despus de una operacin aritmtica; tambin lleva el contenido del ltimo bit en una operacin de corrimiento o rotacin. La adicin de dos nmeros en un punto fijo produce over flow si y solo si:
a) flmdos trminos de 1a suma tienen sipnos

idnticos, pero 1a suma tiene di}erentes sipnos. d) fa adicin produce un acarreo en e1 dit de sipno

o en e1 dit ms sipni}icativo, pero no en amdos.

Cuando se utilizan nmeros en precisin mltiple, debido a que las instrucciones aritmticas de un microprocesador operan con un solo byte, debe crearse una subrutina, para operar con nmeros de varios bytes, en el cual intervenga el flag de acarreo. Para facilitar esto, suele haber una instruccin de suma con carry, que suma el bit del carry, el acumulador y el otro operando; poniendo el resultado en el acumulador y el bit del carry.

OPERAIONES ARITMTIAS T LGIAS EN MIROPROESADORES

1.1.2 S u ma de Registro: se emplea suma de registro para sumar cierto nmero de registros entre s. Siempre que se ejecutan la mayor parte de las instrucciones aritmticas y lgicas, el contenido del registro de banderas muestran el resultado de la operacin aritmtica. Cualquier instruccin ADD modifica el contenido de las banderas de signo, cero, acarreo, acarreo auxiliar, paridad y sobreflujo. 1.1.3 S u ma Inmediata: la suma inmediata se utiliza siempre que se

suman datos constantes o conocidos. 1.1.4 S u ma de M emoria a Registro: permite la suma de dos bytes consecutivos de datos de la memoria almacenados en las localidades con desplazamiento NUM y NUM+1 en el registro. 1.1.5 S u ma de Arreglos: los arreglos en memoria son listas de datos que hay en memoria. Se recorre el array dependiendo el posicionamiento dado y se direcciona al registro que llevara la suma acumuladora. 1.1.6 S u ma de incremento: la suma de incremento (INC) agrega un 1 a un registro o a una localidad de la memoria. La instruccin INC puede sumar un 1 a cualquier registro o localidad de la memoria, excepto a un registro de segmento. Con incrementos indirectos en la memoria, el tamao de los datos se debe describir con el empleo de los directivos BYTE PTR; WORD PTR o DWORD PTR. La razn es que el programa ensamblador no puede determinar si, por ejemplo, la instruccin INC [DI] es un incremento de tamao de byte, palabra o doble palabra. La instruccin INC BYTE PTR [DI] indica con claridad datos de memoria de tamao byte; INC WORD PTR [DI] indica sin lugar a duda un dato de memoria de tamao de palabra; la instruccin INC DWORD PTR [DI] incrementa datos de tamao doble palabra. 1.1.7 S u ma con Acarreo: una instruccin de suma, con acarreo (ADC), suma el bit de la bandera (C) de acarreo a los datos del operando. Esta instruccin casi siempre aparece en programas que suman elementos de un ancho mayor de 16 bits en los 8086-80286 o de 32 bits en los 80386 y 80486. Al igual que la instruccin ADD, la ADC afecta las banderas despus de la suma.

OPERAIONES ARITMTIAS T LGIAS EN MIROPROESADORES

1.1.8 Intercambiar y su mar para el microprocesador 80486: en el conjunto de instrucciones para el 80486 aparece un nuevo tipo de suma llamada intercambiar y sumar (XADD), la cual suma datos de la fuente a los del destino y almacena la suma en el destino igual que con cualquier otra suma. La diferencia es que, despus de que ocurre la suma, se copia el valor original del destino y se pone en el operando fuente. Esta instruccin es una de las pocas que cambian la fuente. Por ejemplo, si BL=12H y DL= 02H y se ejecuta la instruccin XADD BL, DL, el registro BL contiene la suma de 14H y DL se convierte en 12H. Se genera la suma de 14H y el destino original de 12H sustituye a la fuente. Esta instruccin funciona con cualquier tamao de registro y cualquier operando de memoria, igual que la instruccin ADD normal.

1.2

RESTA

En el conjunto de instrucciones de los 8086-80286 aparecen muchas formas de resta (SUB). Estas formas utilizan cualquier modo de direccionamiento con datos de 8, 16 o 32 bits. Una forma especial de la resta (decremento) resta o decrementa un 1 en cualquier registro o localidad de la memoria. Casi los nicos tipos de resta no permitidos son de memoria a memoria y registro de segmento. Igual que otras instrucciones aritmticas, la instruccin para resta influye en los bits de bandera. 1.2.1 Resta de Registro: se efecta resta en registro hacindose

modificacin del contenido del registro de banderas. Las banderas cambian para la mayor parte de las operaciones aritmticas y lgicas. 1.2.2 Resta Inmediata: igual que para las sumas, el microprocesador permite que haya operandos inmediatos para la resta de datos constantes. 1.2.3 Decremento: el decremento (DEC) resta un 1 de un registro o del contenido de una localidad de memoria. Las instrucciones para decrementar datos indirectos en memoria, requieren BYTE PTR, WORD PTR o DWORD PTR, porque el lenguaje ensamblador no puede distinguir un byte de una palabra, cuando un

OPERAIONES ARITMTIAS T LGIAS EN MIROPROESADORES

registro ndice direcciona la memoria. Por ejemplo DEC [SI] es vaga, porque el ensamblador no puede determinar si la localidad direccionada por SI es un byte o una palabra. El tamao de los datos se revela con el empleo de DEC BYTE PTR [SI], DEC WORD PTR [DI] o DEC DWORD PTR [SI]. 1.2.4 Resta con Prstamo: una instruccin de resta con prstamo (SBB) funciona igual que una resta normal, excepto que la bandera (C) de acarreo tambin se resta de la diferencia. El empleo ms comn de esta instruccin es para restas con un ancho mayor de 16 bits en los 8086-80286 o de un ancho mayor de 32 bits en los 80386 y 80486. Las restas <<anchas>> requieren que los prstamos se propaguen en la resta, igual que en las sumas <<anchas>> se propag el acarreo.

1.3

COMPARACIN

La instruccin (CMP) para comparacin es una resta que slo afecta los bits de bandera. La comparacin es til para comprar el contenido de un registro o una localidad de memoria contra otro valor. La CMP suele ir seguida por una instruccin de brinco (JMP) condicional que prueba las condicin de los bits de bandera. Esta instruccin se emplea para comparar un byte o palabra completos, ubicados en cualquier registro (excepto de segmento) o en la memoria. 1.3.1 Comparar e Intercambiar: la instruccin de comparar e intercambiar (CMPXCHG) que slo se encuentra en las instrucciones para el 80486, compara el operando destino con el acumulador. Si son iguales, se copia el operando fuente en el destino. Si no son iguales, se copia el operando destino y se pone en el acumulador. Esta instruccin funciona con datos de 8, 16 o 32 bits. La instruccin CMPXCHG CX, DX es un ejemplo de esa instruccin. Esta instruccin primero compara los contenidos de CX y de AX. Si CX es igual a AX, DX se copia en AX. Si CX no es igual a AX se copia en AX. Esta instruccin X tambin compara AL con datos de 8 bits y a EAX con datos de 32 bits si el operando es de 8 o de 32 bits.

OPERAIONES ARITMTIAS T LGIAS EN MIROPROESADORES

1.4

MULTIPLICACIN

Se efecta en bytes, palabras o dobles palabras y pueden ser enteros con signo (IMUL) o sin signo (MUL). Se debe tener en cuenta que slo en los 80386 y 80486 se pueden multiplicar dobles palabras de 32 bits. El producto despus de una multiplicacin es siempre de doble ancho. Si se multiplican dos nmeros de 8 bits, se genera un producto de 16 bits; si se multiplican dos nmeros de 16 bits, se genera un producto de 32 bits y si se multiplican dos nmeros de 32 bits, se genera un producto de 64 bits. 1.4.1 M u ltiplicacin de 8 bits: siempre multiplica el registro AL por un operando y el producto se encuentra en AX. 1.4.2 M u ltiplicacin de 16 bits: la multiplicacin de palabras es

muy semejante a la multiplicacin de bytes. La diferencia es que el multiplicando est en AX en vez de AL y el producto aparece en DX-AX en lugar de AX. El registro DX siempre contiene los 16 bits ms significativos del producto y AX los 16 bits menos significativos. 1.4.3 M u ltiplicacin inmediata de 16 bits: la multiplicacin inmediata debe tener signo y el formato de la instruccin es diferente porque contiene tres operandos. El primer operando es el registro destino de 16 bits; el segundo es un registro o localidad de la memoria que contiene el multiplicando de 16 bits; el tercero son datos inmediatos de 8 o de 16 bits utilizados como multiplicador. 1.4.4 M u ltiplicacin de 32 bits: en la multiplicacin de 32 bits, el

contenido de EAX se multiplica por el operando especificado con la instruccin. El producto, de 64 bits de ancho, se encuentra en EDX y en EAX, donde EAX contiene los 32 bits menos significativos del producto.

1.5

DIVISIN

Se efecta con nmeros de 8 o de 16 bits y tambin de 32 bits. Estos nmeros son enteros con signo (IDIV) o sin signo (DIV). El dividendo siempre es

OPERAIONES ARITMTIAS T LGIAS EN MIROPROESADORES

uno de doble ancho que se divide entre el operando, esto significa que en una divisin de 8 bits se divide un nmero de 16 bits entre uno de 8 bits; en una divisin de 16 bits se divide un nmero de 32 bits entre uno de 16; en la divisin de 32 bits se divide un nmero de 64 bits entre uno de 32 bits. 1.5.1 Divisin de 8 bits: se utiliza el registro de AX para almacenar el dividendo, que se divide entre el contenido de cualquier registro o localidad de memoria de 8 bits. El cociente se transfiere a AL despus de la divisin y AH contiene un residuo de nmero entero. Para una divisin con signo, el cociente es positivo o negativo, pero el residuo es siempre un entero positivo. 1.5.2 Divisin de 16 bits: se divide entre DX-AX. El cociente aparece en AX y el residuo en DX despus de una divisin de 16 bits. Igual que para la divisin de 8 bits, hay que convertir los nmeros a la forma adecuada para el dividendo. Si se empieza con un nmero de 16 bits sin signo en AX, entonces DX se debe borrar a cero. El nmero se extiende con ceros con el empleo de la instruccin MOVZX. Si AX es un nmero de 16 bits con signo, la instruccin CWX (convertir palabra a doble palabra), lo extiende por signo a formar un nmero de 32 bits con signo. 1.5.3 Divisin de 32 bits: se efectan divisiones de 32 bits en nmeros con signo o sin signos. El contenido de 64 bits de EDX-EAX se divide entre el operando especificado por la instruccin y queda un cociente de 32 bits en EAX y un residuo de 32 bits en EDX. Aparte del tamao de los registros, esta instruccin funciona igual que las divisiones de 8 y de 16 bits.

1.6

ARITMTICA PARA BCD Y ASCII

Los datos en BCD se suman o restan en forma empacada mediante el ajuste del resultado de la suma con DAA o de la resta con DAS. Los datos en ASCII se suman, restan, multiplican o dividen cuando las operaciones se ajustan con AAA, AAS, AAM y AAD.

OPERAIONES ARITMTIAS T LGIAS EN MIROPROESADORES

1.6.1 Instru ccin AAM : tiene unas interesantes caractersticas adicionales, porque le permite convertir un nmero binario a BCD sin empacar. Esta instruccin convierte un nmero binario entre 00H y 63H en BCD sin empacar en AX.

Operaciones Lgicas Bsicas:

Las operaciones lgicas proporcionan en control de bits binarios en programacin de <<bajo nivel>>. Las instrucciones lgicas permiten hacer uno, cero o complementar bits. La programacin de bajo nivel aparece en forma de lenguaje de mquina o lenguaje de ensamblador y a menudo controla los dispositivos de E/S en un sistema. Todas las instrucciones lgicas afectan los bits de bandera. Las operaciones lgicas siempre hacen cero las banderas de acarreo y sobreflujo, mientras que las otras banderas cambian para reflejar la condicin del resultado. 2.1 Las instrucciones AND, OR y OR EXCLUSIVO, efectan funciones lgicas en un byte, palabra o doble palabra almacenados en un registro o en una localidad de memoria. Todas las banderas cambian con estas instrucciones y se hacen cero (borran) acarreo (C) y sobreflujo (O). 2.2 La instruccin TEST efecta la operacin AND y el producto lgico se pierde. Esta instruccin cambia los bits de bandera para indicar el resultado de la prueba. 2.3 Las instrucciones NOT y NEG efectan inversiones lgica y aritmtica. La instruccin NOT complementa a 1 un operando y la instruccin NEG complementa a 2 un operando, lo cual significa que el signo del nmero cambia de positivo a negativo o viceversa. 2.4 Corrimientos: Las instrucciones para corrimiento colocan o mueven nmeros a izquierda o derecha dentro de un registro o localidad de memoria. Tambin efectan operaciones aritmticas sencillas como multiplicacin por potencias de 2+n (corrimiento a la izquierda) o divisin entre potencias de 2-n (corrimiento a la derecha).

OPERAIONES ARITMTIAS T LGIAS EN MIROPROESADORES

Los corrimientos lgicos multiplican o dividen datos sin signo y los corrimientos aritmticos multiplican o dividen datos con signo. Un corrimiento a la izquierda siempre multiplica por 2 en cada posicin de bits desplazada y un desplazamiento a la derecha siempre divide entre 2 en cada posicin de bits desplazada. Hay ocho diferentes instrucciones para corrimiento y rotacin. Cada uno recorre o rota un registro de byte, palabra o doble palabra o datos de la memoria. Estas instrucciones tienen dos operandos: el primero es la de los datos desplazados o girados y, el segundo es un contador de corrimiento inmediato o de rotacin o CL. Si el segundo operando es CL, el registro CL contiene el contador de los corrimientos o rotaciones. En los microprocesadores 80386 y 80486, hay dos instrucciones adicionales para corrimiento, de doble precisin (SHRD y SHLD). 2.5 Rotaciones: las instrucciones para rotacin colocan los datos binarios porque hacen rotar la informacin en un registro o localidad de memoria, sea de un extremo a otro a travs de la bandera de acarreo. La instruccin SCAS para rastrear compara AL, AX o EAX con el contenido de una localidad de memoria en el segmento extra direccionada por DI. La instruccin para comparar cadenas (CMPS) compara el contenido byte, palabra o doble palabra de dos secciones de la memoria. DI direcciona a una seccin en el segmento extra y SI a la otra en el segmento de datos. Las instrucciones SCAS y CMPS se repiten con los prefijos REPE o REPNE. El prefijo REPE repite las intenciones para cadena, mientras hay una condicin de igualdad y el registro REPNE repite la instruccin a la cadena cuando hay una condicin de igualdad.

OPERAIONES ARITMTIAS T LGIAS EN MIROPROESADORES

INDICE Introduccin Operaciones Aritmticas 1.1Suma 1.1.1 Registro de Bandera 1.1.2 Suma de Registro 1.1.3 Suma Inmediata 1.1.4 Suma de Memoria a Registro 1.1.5 Suma de Arreglos 1.1.6 Suma de Incremento 1.1.7 Suma con Acarreo 1.1.8 Intercambiar y Sumar para el microprocesador 80486 1.2 Resta 1.2.1 Resta de Registro 1.2.2 Resta Inmediata 1.2.3 Decremento 1.2.4 Resta con Prstamo 1.3 Comparacin 1.3.1 Comparar e Intercambiar 1.4 Multiplicacin 1.4.1 Multiplicacin de 8 bits 1.4.2 Multiplicacin de 16 bits 1.4.3 Multiplicacin Inmediata de 16 bits 1.4.4 Multiplicacin de 32 bits 1.5 Divisin 1.5.1 Divisin de 8 bits 1.5.2 Divisin de 16 bits 1.5.3 Divisin de 32 bits 1.6 Aritmtica para BCD y ASCII 1.6.1 Instruccin AAM Operaciones Lgicas Bsicas 2.1 Instrucciones AND, OR y OR EXCLUSIVO 2.2 Instruccin TEST 2.3 Instruccin NOT y NEG 2.4 Corrimientos 2.5 Rotaciones Bibliografa

OPERAIONES ARITMTIAS T LGIAS EN MIROPROESADORES

Bibliografa Brey B, Barry. (1994). Microprocesadores Intel: Arquitectura, Programacin E Interfaz: 8086. Editorial Pearson Education. (tercera Edicin). Mxico. Pg. 117-155. h ttp://www. bu enastareas. com/ensayos/M icroprocesadores/206033. h tml

OPERAIONES ARITMTIAS T LGIAS EN MIROPROESADORES

EJEMPLO OPERACIN ARITMTICA

También podría gustarte