operaciones aritméticas logicas

Upload: keith-fernandez

Post on 24-Feb-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/24/2019 Operaciones Aritmticas Logicas

    1/7

    Facultad de Ingeniera de Sistemas,Cmputo y Telecomunicaciones

    Microprocesadores

    Flix Armando Fermn Prez

    .

  • 7/24/2019 Operaciones Aritmticas Logicas

    2/7

    1

    Leccin 7

    Operaciones aritmtico-lgicas y de manejo de bits.

    Una de las principales tareas de un microprocesador junto con la transferir datos deun lado a otro, es la realizar operaciones o mejor dicho clculos tanto aritmticoscomo lgicos con los contenidos de sus registros internos, de posiciones dememoria o las ingresadas por un puerto de entrada. Estos clculos aritmticos olgicos son realizados por una unidad interna del microprocesador conocida comounidad aritmtico-lgica o simplemente ALU (por sus siglas: Arithmetic-Logic Unit).

    En los primeros microprocesadores solo se trataba con nmeros enteros, si eranecesario tratar con nmeros con parte decimal, se utilizaba un coprocesadormatemtico que se instalaba en la placa principal junto al procesador principal. Apartir del Intel 486, se integr dicho coprocesador en el mismo circuito integradodel microprocesador de manera que sea posible realizar clculos ms complejos conlos registros internos y empleando incluso instrucciones especficas para cada caso.(Brey, 2000, p.8)

    7.1 Operaciones aritmticas.Las operaciones aritmticas a tratar en esta leccin son las de adicin,substraccin, multiplicacin, divisin, comparacin, negacin (aritmtica),incremento y decremento. Entre las instrucciones lgicas se encuentran lasoperaciones AND, OR, OR exclusivo, NOT (negacin lgica), desplazamientos,rotaciones y la comparacin lgica.

    Debe considerarse que estas operaciones ya son conocidas, debido a que en unaasignatura anterior se las estudio pero a nivel de hardware de circuitos digitales. Enesta leccin el nivel de abstraccin es ms alto, ya al nivel del software.

    En las tablas N 7.1 y 7.2 se muestran las instrucciones de adicin y substraccin.

    Instruccin ADD: sumar nmeros binariosDescripcin Suma nmeros binarios desde la memoria, registro o

    inmediato dependiendo del direccionamiento elegido.Banderas Afecta a las banderas: AF, CF, OF, PF, SF y ZFFormato ADD {registro/memoria}, registro/memoria/ inmediato}Ejemplo ADD AX, BX

    Tabla N 7.1 Instruccin ADD (Fuente: Fernndez, 1998)

    Instruccin SUB: restar nmeros binarios

    Descripcin Resta nmeros binarios en un registro, memoria oinmediato a un registro o a memoria, depende deldireccionamiento elegido.

    Banderas Afecta a las banderas: AF, CF, OF, PF, SF y ZFFormato SUB {registro/memoria}, registro/memoria/ inmediato}Ejemplo SUB AX, BX

    Tabla N 7.2 Instruccin SUB (Fuente: Fernndez, 1998)

    En el caso de la instruccin ADD AX, BX por ejemplo, la ALU lo que hace es sumarlos contenidos de registros AX y BX, y el resultado almacenarlo en el registro AX.De manera similar se procesan las instrucciones de substraccin.

    Otro conjunto de operaciones ampliamente utilizadas lo constituyen lasinstrucciones de multiplicacin y divisin mostradas en las Tablas N 7.3 y 7.4.

  • 7/24/2019 Operaciones Aritmticas Logicas

    3/7

    2

    Instruccin MUL: multiplica sin signoDescripcin Multiplica dos operandos sin signoBanderas Afecta a CF y OF (AF, PF, SF y ZF indefinidas)Formato MUL {registro/memoria}Ejemplo MUL CL

    Operando1 Operando2 Producto EjemploAL Registro/pos.mem 8 bits AX MUL CLAX Registro/pos.mem 16 bits DX:AX MUL CX

    Tabla N 7.3 Instruccin MUL (Fuente: Fernndez, 1998)

    En el ejemplo MUL CL; el operando con el que multiplica CL, es AL; en este caso,como CL es de 8 bits, cuando AL es multiplicado por CL, el producto sin signo esalmacenado en AX. Pero si ahora la instruccin es MUL BX, por ejemplo, entonces almultiplicar AX con BX, el producto sin signo se almacena en dos registros: DX AX,en DX se almacenan los bits ms significativos y en AX los bits menos significativos.

    Instruccin DIV: dividir sin signoDescripcin Divide un dividendo entre un divisor. Si se divide entre

    cero provoca una interrupcin.Banderas AF, CF, OF, PF, SF y ZF indefinidasFormato DIV {registro/memoria}Ejemplo DIV CL

    Dividendo Divisor Cociente Resto EjemploAX Registro/pos.mem 8 bits AL AH DIV CLDX:AX Registro/pos.mem 16 bits DX AX DIV CX

    Tabla N 7.4 Instruccin DIVUB (Fuente: Fernndez, 1998)

    En el primer caso, DIV CL, el primer operando es AX, o sea se divide el contenidodel registro AX entre el registro CL, el cociente queda en AL y el resto en AH.

    A continuacin en la Tabla N 7.5 se muestra la instruccin de negacin.

    Instruccin NEG: negacin aritmticaDescripcin Invierte un nmero binario de positivo a negativo y

    viceversa. Trabaja realizando el complemento a dos.Banderas Afecta a AF, CF, OF, PF, SF y ZFFormato NEG {registro/memoria}Ejemplo NEG AH

    Tabla N 7.5 Instruccin NEG (Fuente: Fernndez, 1998)

    Otras instrucciones como las mostradas en las Tablas N 7.6 y 7.7, incrementan ydisminuyen el contenido de registros en una unidad.

    Instruccin INC: incrementa en unoDescripcin Incrementa en uno, un byte o palabra de un registro o

    posicin de memoria.Banderas Afecta a AF, OF, PF, SF y ZFFormato INC {registro/memoria}Ejemplo INC [CFA12H]

    Tabla N 7.6 Instruccin INC (Fuente: Fernndez, 1998)

  • 7/24/2019 Operaciones Aritmticas Logicas

    4/7

    3

    Instruccin DEC: decrementa en unoDescripcin Decrementa en uno, un byte o palabra de un registro o

    posicin de memoria.Banderas Afecta a AF, OF, PF, SF y ZFFormato DEC {registro/memoria}

    Ejemplo DEC AXTabla N 7.7 Instruccin DEC (Fuente: Fernndez, 1998)

    7.2 Operaciones lgicas.En las Tablas N 7.8, 7.9, 7.10, 7.11, 7.12 y 7.13 se muestran las conocidas

    instrucciones lgicas AND, OR, XOR, NOT, CMP y TEST:

    Instruccin AND: conjuncin lgicaDescripcin Realiza la conjuncin lgica de bits de dos operandosBanderas Afecta a CF (0),OF (0), PF, SF y ZF; AF indefinidoFormato AND {registro/memoria}, {registro/memoria/inmediato}Ejemplo AND CX, DX

    Tabla N 7.8 Instruccin AND (Fuente: Fernndez, 1998)

    Instruccin OR: disyuncin lgicaDescripcin Realiza la disyuncin lgica de bits de dos operandosBanderas Afecta a CF (0),OF (0), PF, SF y ZF; AF indefinidoFormato OR {registro/memoria}, {registro/memoria/inmediato}Ejemplo OR CX, DX

    Tabla N 7.9 Instruccin OR (Fuente: Fernndez, 1998)

    Instruccin XOR: disyuncin exclusivaDescripcin Realiza la disyuncin exclusiva de bits de dos operandosBanderas Afecta a CF (0),OF (0), PF, SF y ZF; AF indefinidoFormato XOR {registro/memoria}, {registro/memoria/inmediato}Ejemplo XOR CX, DX

    Tabla N 7.10 Instruccin XOR (Fuente: Fernndez, 1998)

    Instruccin NOT: negacin lgicaDescripcin Complementa todos los bits del operandoBanderas No las afecta

    Formato NOT {registro/memoria}Ejemplo NOT CXTabla N 7.11 Instruccin NOT (Fuente: Fernndez, 1998)

    Instruccin CMP: comparacin aritmticaDescripcin Compara el contenido de dos campos de datos. Resta el

    segundo operando del primero y actualiza las banderaspero no las guarda.

    Banderas Afecta a AF, CF, OF, PF, SF y ZFFormato CMP {registro/memoria}, {registro/memoria/inmediato}Ejemplo CMP BX, 23C5H

    Tabla N 7.12 Instruccin CMP (Fuente: Fernndez, 1998)

  • 7/24/2019 Operaciones Aritmticas Logicas

    5/7

    4

    Instruccin TEST: examina bits, comparacin lgicaDescripcin Similar a CMP, pero a nivel de bits. Realiza un AND lgico

    de los dos operandos para establecer el valor de lasbanderas pero sin guardar el resultado.

    Banderas Afecta a CF (0),OF (0), PF, SF y ZF; AF indefinidoFormato TEST {registro/memoria}, {registro/memoria/inmediato}

    Ejemplo TEST BX, 0001110101100101BTabla N 7.13 Instruccin TEST (Fuente: Fernndez, 1998)

    7.3 Operaciones de manejo de bits.

    Adems existen otras operaciones conocidas como de manejo de bits, entre ellas seencuentran las instrucciones de desplazamiento y rotacin de bits y tienen elsiguiente formato general:

    Operacin_Movimiento_Bits{registro/memoria},{CL, 1}

    En la que la operacin de movimiento de bits se aplica al primer operando lacantidad de veces especificada por el segundo operando.

    SHR: Desplazamiento lgico a la derechaSe mueven todos los bits a la derecha, en el bit MSB se introduce un cero, y el bitque sale por la derecha pasa a la bandera CF.0 => MSB . . . LSB => CFEjemplo: SHR BX, CL

    SAR:Desplazamiento aritmtico a la derechaSe mueven todos los bits a la derecha, en el bit MSB se introduce la bandera SF, y

    el bit que sale por la derecha pasa a la bandera CF.S => MSB . . . LSB => CFEjemplo SAR BX, CL

    SHL:Desplazamiento lgico a la izquierdaSe mueven todos los bits a la izquierda, en el bit LSB se introduce un cero, y el bitque sale por la izquierda pasa a la bandera CF.C => MSB . . . LSB MSB . . . LSB CF

    Ejemplo: ROR BX, CL

  • 7/24/2019 Operaciones Aritmticas Logicas

    6/7

    5

    RCR: Rotacin a la derecha con acarreoSe mueven todos los bits a la derecha, en el bit MSB se introduce el valor de labandera CF, y el bit que sale por la derecha es el nuevo valor de la bandera CF.

    . . . => CF

    Ejemplo RCR BX, CL

    ROL: Rotacin lgica a la izquierdaSe mueven todos los bits a la izquierda, en el bit LSB se introduce el bit que salepor la izquierda, que se copia tambin en la bandera CF .

    CF

  • 7/24/2019 Operaciones Aritmticas Logicas

    7/7

    6

    MOV CL, 3SHR BX, CLEND

    Luego de ejecutado el programa, el resultado es BX= 1555H