You are on page 1of 12

ESCUELA POLITCNICA NACIONAL

LABORATORIO DE SISTEMAS MICROPROCESADOS

INFORME DE:

SISTEMAS MICROPROCESADOS
Prctica #: 2 Tema: Algoritmos aritmticos adicionales Fecha de Realizacin: 2012- 08- 22
ao mes da

Realizado por: Alumno (s): Jonathan Tito Bruno Velasco

GRUPO: D

Gr-5

Fecha de entrega: _28_ / _08_ /2012_ ______________________


ao mes da

f.
Recibido por:

Sancin: ________________________________________________ Perodo: Jul - Dic

Marco Terico

El sistema de numeracin utilizado habitualmente es la base 10; es decir, consta de 10 dgitos (0-9) que podemos colocar en grupos, ordenados de izquierda a derecha y de mayor a menor. Cada posicin tiene un valor o peso de 10n donde n representa el lugar contado por la derecha: 135710 = 1357 = 1 x 103 + 3 x 102 + 5 x 101 + 7 x 100 En binario, es decir, en base 2 utilizando el 0 y el 1 son los estados estables en los dispositivos digitales que componen una computadora. Anlogamente a la base 10, cada posicin tiene un valor de 2n donde n es la posicin contando desde la derecha y empezando por 0: 1012 = 1 x 22 + 0 x 21 + 1 x 20 Adems, por su importancia y utilidad, es necesario conocer otros sistemas de numeracin como pueden ser el octal (base 8) y en especial el hexadecimal (base 16) ya que nos ayuda a expresar nmeros que el microprocesador usa en binario pero sera muy extenso el expresarlos en binario por lo que usamos el sistema hexadecimal donde tenemos, adems de los nmeros del 0 al 9, las letras (generalmente en maysculas) de la A a la F. Llegar a un nmero en estos sistemas desde base 2 es realmente sencillo si agrupamos las cifras binarias de 3 en 3 (octal) o de 4 en 4 (hexadecimal): Base 2 a base 8: 101 0112 = 538 Base 2 a base 16: 0010 10112 = 2B16 A la inversa, basta convertir cada dgito octal o hexadecimal en binario: Base 8 a base 2: 248 = 010 1002 Base 16 a base 2: 2416 = 0010 01002

INFORME Para el esquema explicado en la Prctica y que se observa a continuacin:

Describir los algoritmos que se utilizan en las transformaciones.

SUMA HEXADECIMAL DE 16 BITS 8379 + 9CAF = 12028 79 + AF = (1)28 (1) ES EL CARRY YA QUE SOLO TOMAMOS LOS 2 DGITOS MENOS SIGNIFICATIVOS 9C + 83 = 11F + (1) = 120

RESTA HEXADECIMAL DE 16 BITS El algoritmo para realizar las restas es similar al de la suma solo que en vez del carry hay un debo.

MULTIPLICACIN HEXADECIMAL DE 16 BITS: Ej: Multiplicar 8379 por 9CAF 8 3 7 9 X 9 C AF


0 0 + 5 2 B 7 *16 * 16 (AF*79)

+ 5 9 8 D + 4 9 B C + 4 F D 4 5 0 8 0 9 B B 7

*160 * 162 (AF*83) *162 * 160 (9C*79)

*162 * 162 (83*9C)

DIVISIN POR RESTAS Y CORRIMIENTOS Al igual que el mtodo de sumas y corrimientos para la multiplicacin, la divisin por restas y corrimientos se emplea por los procesadores para evaluar las multiplicaciones y las divisiones.

La operacin de divisin es, al igual que al operacin de la multiplicacin muy parecida a la forma en que se divide en forma manual. Por ejemplo. Para dividir 39d entre 3d: Primero se analiza cuantas veces cabe el mltiplo decimal de 3 ms cercano a 39 (3*10 = 30), y cabe una vez, generando un residuo de 39-30 = 9, posteriormente se analiza con el nmero dividido entre diez (30 10) y se analiza cuantas veces cabe este nmero en el resultante (3 cabe 3 veces en el 9) generando un residuo de 0, ste es el residuo total. El cociente obtenido es 13 y el residuo es cero. Si esta operacin se realiza con nmeros binarios se tiene: 39d = 100111b y 3d = 11b El nmero mltiplo de 11 menor que 100111 es 11000 y cabe una vez en el dividendo generando el bit de ms alto orden de la divisin y con el residuo 100111 - 11000 = 1111. Dividiendo el divisor entre el 2d(10b) se tiene 11000/10 = 1100 y se puede observar que este nmero cabe 1 vez en el residuo obtenido y genera un segundo residuo 1111 1100 = 11. Dividiendo nuevamente el divisor entre 10b (110 010 = 11) se observa que cabe una vez en el residuo y genera el bit de ms bajo orden con un residuo 11 - 11 = 0000 entonces 100111 11 = 1101 y residuo = 0 Algoritmo para divisin con restas y corrimientos (dividendo > divisor) DENDO = Dividendo de 16 bits DISOR = Divisor de 8 bits COC = Cociente de 16 bits RES = Residuo de 8 bits 1- Poner el cociente a cero COC <= 0 2- Correr el DISOR a la izquierda el nmero de veces necesario, hasta que sea lo ms cercano posible con el DENDO. 3- Restar el divisor (DISOR) al dividendo (DENDO) generando el residuo (RES). 4- Sumar 1 al cociente (COC). 5- Correr el DISOR a la derecha 1 bit. 6- Asignar el residuo (RES) al dividendo DENDO <= RES. 7- Si el DISOR es mayor que el DENDO, entonces correr el COC un bit a la izquierda. 8- Si el DISOR es menor que el DENDO, entonces correr el COC un bit a la izquierda un bit y sumarle 1, RES = DENDO - DISOR. 9- Si el nmero de veces que se corri el DISOR a la derecha es menor que el nmero de veces que se corri en el inciso 2, entonces continu con 5. 10- COC tiene el valor del cociente y RES tiene el valor del residuo.

Ejemplo: 1100 1101 1100 1110 1001 1100 1.- COC = 0 2.- DISOR = 1001 1100 0000 0000 (se corre 8 bits) 3.- 1100 1101 1100 1110 -1001 1100 0000 0000 0011 0001 1100 1110 => RES 4.- COC = 0+1 = 1 5.- DISOR = 0100 1110 0000 0000 (se corre 1 bit ->) 6.- DENDO = RES = 11 0001 1100 1110 7.- Como DISOR es mayor que el DENDO (se corre el COC 1 bit <-), entonces COC = 10 9.- Si el nmero de veces que se corri el DISOR a la derecha es menor que el nmero
de veces que se corri en el inciso 2, entonces continu con 5.

Nmero de veces realizado el ciclo (1) es menor que 8 5.- DISOR = 0010 0111 0000 0000 (se corre 1 bit ->) 6.- DENDO = RES = 11000111001110
8- Si el DISOR es menor que el DENDO, entonces correr el COC un bit a la izquierda un bit y sumarle 1, RES = DENDO - DISOR.

Como DISOR es menor que DENDO, entonces COC = 100+1 = 101 y 11000111001110 -10011100000000 RES = 00101011001110 9.- Si el nmero de veces que se corri el DISOR a la derecha es menor que el nmero
de veces que se corri en el inciso 2, entonces continu con 5.

Nmero de veces realizado el ciclo (2) es menor que 8 5.- DISOR = 0001 0011 1000 0000 (se corre 1 bit ->) 6.- DENDO = RES = 101011001110
7- Si el DISOR es mayor que el DENDO, entonces correr el COC un bit a la izquierda.

Como DISOR es mayor que DENDO, entonces COC = 1010 9.- Si el nmero de veces que se corri el DISOR a la derecha es menor que el nmero
de veces que se corri en el inciso 2, entonces continu con 5.

Nmero de veces realizado el ciclo (3) es menor que 8 5.- DISOR = 0000 1001 1100 0000 (se corre 1 bit ->)

6.- DENDO = RES = 101011001110


8- Si el DISOR es menor que el DENDO, entonces correr el COC un bit a la izquierda un bit y sumarle 1, RES = DENDO - DISOR.

8.- Como DISOR es menor que DENDO, entonces COC = 10100+1 = 10101 y 101011001110 -100111000000 RES = 0001000011109. 9.- Si el nmero de veces que se corri el DISOR a la derecha es menor que el nmero
de veces que se corri en el inciso 2, entonces continu con 5.

Nmero de veces realizado el ciclo (4) es menor que 8 5.- DISOR = 0000 0100 1110 0000 (se corre 1 bit ->) 6.- DENDO = RES = 100001110 7.- Como DISOR es mayor que DENDO, entonces COC = 101010 9.- Nmero de veces realizado el ciclo (5) es menor que 8 5.- DISOR = 0000 0010 0111 0000 (se corre 1 bit ->) 6.- DENDO = RES = 100001110 7.- Como DISOR es mayor que DENDO, entonces COC = 1010100 9.- Nmero de veces realizado el ciclo (6) es menor que 8 5.- DISOR = 0000 0001 0011 1000 (se corre 1 bit ->) 6.- DENDO = RES = 100001110 7.- Como DISOR es mayor que DENDO, entonces COC = 10101000 8.- Nmero de veces realizado el ciclo (7) es menor que 8 5.- DISOR = 0000 0000 1001 1100 (se corre 1 bit ->) 6.- DENDO = RES = 1000011110 8.- Como DISOR en menor que DENDO, entonces COC = 101010001 100001110 - 10011100 001110010

9.- Nmero de veces realizado el ciclo (8) es igual a 8 10.- COCIENTE = 101010001 RESIDUO = 1110010
Algoritmo para divisin con restas y corrimientos (dividendo < divisor) Al realizar esta operacin, el cociente resulta fraccionario, pero el algoritmo aprendido en la prctica en el inciso anterior puede ser utilizado para realizar esta operacin con modificaciones menores. El algoritmo de la divisin explicado iniciaba con 8 ceros en la parte izquierda y a continuacin los 8 bits del dividendo en la parte derecha, luego se realizaba el proceso de 8 desplazamientos a la izquierda con sus respectivas restas, finalmente los 8 bits ms significativos (los de la izquierda) del resultado corresponden al residuo y los 8 bits menos significativos (los de la derecha) corresponden al cociente. Este algoritmo es vlido para dividir un nmero menor entre uno mayor con las siguientes modificaciones: Iniciar con los 8 bits del dividendo en la parte izquierda y colocar los 8 ceros en la parte derecha, a continuacin realizar exactamente el mismo proceso de 8 desplazamientos y restas; finalmente los 8 bits ms significativas del resultado corresponden al residuo y los 8 bits menos significativos corresponden al cociente. Pero el cociente debe ser interpretado de diferente manera: Asuma que el punto decimal est antes del bit ms significativo, es decir el bit ms significativo tiene un valor de 2-1 = 1/2, el siguiente 2-2 = 1/4, y as sucesivamente. Algoritmo de Aritmtica Decimal BCD Aritmtica Binaria (y viceversa) 1.- Se ingresa en primer nmero decimal por el teclado. 2.- El nmero que se ingres se codifica en BCD con un circuito integrado Conversor de BCD a binario o para optimizar tiempo y dinero se lo codifica con un microcontrolador. 3.- El nmero convertido en BCD es quemado en el respectivo microcontrolador y en ese proceso se convierte a el sistema binario. 4.- El nmero convertido a binario microcontrolador. quedara almacenado en la memoria del

5.- Se ingresa un Segundo nmero decimal por el teclado. 6.- El segundo nmero que se ingres se codifica con un circuito integrado para convertirlo en BCD siguiendo el algoritmo para codificar al primer nmero. 7.- El segundo nmero convertido en BCD a travs de un programa realizado en una IDE (entorno de desarrollo integrado) es quemado en el respectivo microcontrolador y se convierte al sistema binario en el proceso. 8.- El segundo nmero en binario quedara almacenado en la memoria del microcontrolador.

9.- Se realiza la operacin aritmtica seleccionada en el microcontrolador. 10.- El resultado de operacin binaria aritmtica quedara almacenado en la memoria del microprocesador. 11.- Este resultado binario se lo pasa a BCD por medio del programa que esta quemado en el microcontrolador. 12.- El resultado BCD se lo decodifica con un circuito integrado o un programa para que se despliegue en la pantalla. 13.- Se muestra el resultado en los displays.

BCD a BINARIO {equivale a: Decimal a Hexadecimal} 49 a HEX Decimal = 10 = A, entonces: 4*A1 + 9*A0 = 28 + 9 = 31 HEX = 0011 0001 BCD BINARIO a BCD {equivale a: Hexadecimal a Decimal} 66 HEX a DEC Decimal = 10 = A, entonces: 66/A = {A} sobrando 2 A*{A} = 64, 66-64 = 2 {A} / A = 1 sobrando 0 Por lo tanto 66 HEX = 102 DEC

Otro algoritmo seria dividir para las potencias de A, siguiendo el principio inverso de la conversin de BCD a BINARIO

Desarrollar los algoritmos mediante aritmtica hexadecimal con los nmeros que corresponde a cada grupo. X= 5368=14F8=1010011111000 Y= 3834=0EFA=111011111010

Suma

14F8 + 0EFA = 23F2 F8 + FA = (1)F2 (1) ES EL CARRY YA QUE SOLO TOMAMOS LOS 2 DGITOS MENOS SIGNIFICATIVOS 14 + 0E = 22 + (1) = 23 Resta

14F8 - 0EFA = 5FE F8 - FA = (1)FE (1) ES EL DEBO YA QUE SOLO TOMAMOS LOS 2 DGITOS MENOS SIGNIFICATIVOS 14 - 0E = 6 - (1) = 5 Multiplicacin 1 4 F 8 X 0 E F A + F 2 3 0 + 1 3 8 8 + 0 D 9 0 + 0 1 1 8 1 3 A 0 A 3 0 *160 * 160 (FA*F8)

*160 * 162 (FA *14) *162 * 160 (0E* F8)

*162 * 162 (14*0E)

Y desarrollar la operacin Z = X * Y utilizando la aritmtica hexadecimal de 8 bits.

X= 5368 => 0101001101101000 => 0001 0100 1111 1000 Y= 3834 => 0011100000110100 => 0000 1110 1111 1010 Z=20580912=>00100000010110000000100100010010=> 0001 0100 1010 0000 1010 0100 0000 BCD a BINARIO {equivale a: Decimal a Hexadecimal} X= 5368 a HEX Decimal = 10 = A, entonces: 5*A3 + 3*A2 +6*A1 + 8*A0 = 14F8 HEX Y= 3834 a HEX Decimal = 10 = A, entonces: 3*A3 + 8*A2 +3*A1 + 4*A0 = 0EFA HEX Z=20580912 a HEX Decimal = 10 = A, entonces: 2*A7 + 0*A6 +5*A5 + 8*A4 +0*A3 + 9*A2 +1*A1 + 2*A0 = 13A0A30 HEX

CONCLUSIONES Y RECOMENDACIONES: Por: Jonathan Tito Se pueden realizar las operaciones aritmticas bsicas con 16 bits usando lo que sabemos de las operaciones con 8 bits. Para facilitarnos el manejo de las operaciones con 16 bits podemos usar nmero hexadecimales en vez de los nmeros en binario que seran de una longitud engorrosa para trabajar con ellos y provocara errores por parte de quienes operan con cifras tan largas. Transformar de BCD a Binario es equivalente a transformar de Decimal a Hexadecimal. Transformar de Binario a BCD es equivalente a transformar de Hexadecimal a Decimal. Las leyes y algoritmos de las operaciones en los diferentes sistemas numricos son equivalentes solo hay que fijarse en las ponderaciones y aprender a manejar el algoritmo especfico del sistema de numeracin correlacionndolo con su equivalente decimal que es con el sistema que ms estamos relacionados. Por: Bruno Velasco Observamos que la multiplicacin binaria de 16*16 bits se realiza de igual forma que una multiplicacin decimal. Estas operaciones de 16 bits son de gran importancia ya que es la base para saber cmo hacen nuestros programas las operaciones. Estas operaciones usan sistemas de codificacin que reduce la representacin de nmeros decimales haciendo las diversas operaciones ms rpidas. En la multiplicacin binaria, podemos ver que en cada iteracin se realiza un corrimiento a la izquierda, y el bit del operando 1 que ya fue utilizado jams en el proceso vuelve a ser utilizado. El algoritmo de la divisin se basa en prueba y error, al igual que con los nmeros en decimal, la divisin binaria busca el nmero que multiplicado por el divisor nos da el mayor nmero que se puede restar al dividendo sin que nos d un valor negativo. En la divisin el bit ms significativo es aislado del numero binario por medio de una rotacin dentro de la bandera del carry.

BIBLIOGRAFIA http://antares.itmorelia.edu.mx/~rvargas/intro/sistNumeracion.pdf www.ldc.usb.ve/~adiserio/ci3815/.../AritmeticaPuntoFlotante.pdf www.infor.uva.es/~descuder/.../pd/node86.html www.atmel.com/dyn/resources/prod_documents/doc0938.pdf

You might also like