Algoritmos aritméticos adicionales

LABORATORIO DE SISTEMAS MICROPROCESADOS
ESCUELA POLITÉCNICA NACIONAL
Campus Politécnico "J. Rubén Orellana R."
FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA
Carrera de Ingeniería Electrónica y Control
Carrera de Ingeniería Electrónica y Telecomunicaciones
Carrera de Ingeniería Electrónica y Redes de Información
Carrera de Ingeniería Eléctrica
LABORATORIO DE SISTEMAS MICROPROCESADOS
PRÁCTICA Nº2
1. TEMA :
ALGORITMOS ADICIONALES
2. OBJETIVO:
Revisar algunos algoritmos que se emplearan en prácticas futuras.
3. INFORMACIÓN:
3.1 OPERACIONES DE 16 BITS
Dado que el microprocesador es de 8 bits, las operaciones como suma y resta de
16 o más bits deben realizarse de 8 bits en 8 bits tomando en consideración el carry que
puede generarse (o el Borrow). Revisar la nota de aplicación AVR202.
3.2 ALGORITMO DE MULTIPLICACIÓN EN 16 BITS
Se puede usar el algoritmo de multiplicación aprendido en la práctica No. 1, sin embargo
el microcontrolador a usar dispone de un multiplicador de hardware que puede
multiplicar dos números de 8 bits cada uno con o sin signo. Es posible usar este
multiplicador para realizar multiplicaciones de 16x16 según el siguiente esquema (Revisar
la nota de aplicación AVR201):
Dirección: Ladrón de Guevara E11-253
Teléfono: (02) 2976300 Ext.2209
Quito - Ecuador
Correo: [email protected]
LABORATORIO DE SISTEMAS MICROPROCESADOS
Fig. 1 Algoritmo de multiplicación
3.3 ALGORITMO DE DIVISIÓN EN 16 BITS
El microcontrolador a usar no dispone de instrucciones de división, por lo que se debe usar
el algoritmo de desplazamientos y restas aprendido en la Práctica 1.
3.4 ALGORITMO DE DIVISIÓN DE UN NÚMERO MENOR PARA UN NÚMERO MAYOR
Al realizar esta operación, el cociente resulta fraccionario, pero el algoritmo aprendido en
la Práctica 1 puede ser utilizado para realizar esta operación con modificaciones menores.
El algoritmo de la división explicado en la Práctica 1 iniciaba con 8 ceros en la
parte izquierda y a continuación 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 más 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 válido para dividir un número 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 continuación realizar exactamente el mismo proceso de 8
desplazamientos y restas; finalmente los 8 bits más 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 más significativo, es decir el bit más significativo tiene un valor de 2-1, el
siguiente 2-2, y así sucesivamente.
Dirección: Ladrón de Guevara E11-253
Teléfono: (02) 2976300 Ext.2209
Quito - Ecuador
Correo: [email protected]
LABORATORIO DE SISTEMAS MICROPROCESADOS
Ejemplo con 4 bits.
2/7
DIVIDENDO
DIVISOR
COMPLEMENTO A 2
2:
7:
0
0
0
1
1
1
0
1
7*: 1
0
0
1
DIVIDENDO
CARRY
CARRY
CARRY
CARRY
0
0
1
0
0
0
0
0
1
0
1
0
0
0
0
1
1
0
0
0
0
1
0
0
1
1
0
0
0
0
0
0
0
1
1
0
0
0
0
2
1
1
1
0
0
0
0
1
0
1
0
0
1
0
0
1
0
0
1
0
3
0
1
0
1
1
1
0
1
0
0
0
0
1
1
0
1
0
0
4
0
0
1
1
RESIDUO
COCIENTE
0
1
0
0
0
1
0
0
2-1
2-2
2-3
2-4
2-1
2-2
2-3
2-4
0.25
0.25
3.5 REPRESENTACIÓN DE NÚMEROS FRACCIONARIOS
La representación de números fraccionarios en el microcontrolador a usar, no está
estandarizada, pues su Unidad Aritmética y Lógica trabaja con enteros. Hay algunas
maneras usuales de hacerlo, como por ejemplo:

Llevar por separado (en registros independientes) la parte entera y la parte
fraccionaria, que sería útil si se usa el algoritmo de la división explicado en el último
párrafo.

La forma estandarizada que usan muchos de los lenguajes (Basic, C, etc.) y con
la que trabajan las unidades de punto flotante (FPU) de muchos microprocesadores de
uso general (Standard IEEE 754). Se asignan espacios para el signo, el exponente y la
mantisa (cada uno por separado) en una secuencia de bits. Para realizar operaciones
usando esta representación se requiere de un conjunto bastante complejo de
algoritmos.
Dirección: Ladrón de Guevara E11-253
Teléfono: (02) 2976300 Ext.2209
Quito - Ecuador
Correo: [email protected]
LABORATORIO DE SISTEMAS MICROPROCESADOS
3.6 IMPORTANCIA DE LA REPRESENTACIÓN DE NÚMEROS EN BCD
Las personas están familiarizadas con el Sistema de Numeración Decimal, al contrario del
microcontrolador que mediante las instrucciones manipulan a los números en binario; por
lo que es necesario implementar las transformaciones entre estos dos sistemas de
numeración.
Pero, al utilizar el ingreso de números con teclados y la salida con displays de 7 segmentos,
el microcontrolador solo debe realizar las transformaciones entre BCD y Binario.
Para la transformación de un número entero de BCD a Binario se lo realiza mediante
multiplicaciones sucesivas por 10 o la variación de este algoritmo con multiplicaciones por
las potencias de 10. Igualmente, para transformar números enteros de Binario a BCD se
utiliza el algoritmo de divisiones sucesivas para 10 o la variación de divisiones con
potencias de 10, en ambos casos las divisiones utilizan desplazamientos y restas. (Revisar
la nota de aplicación AVR204)
4. TRABAJO PREPARATORIO
Si bien esta es una sesión de trabajo tutorial, el estudiante debe traer preparados por escrito (A
MANO) lo que se pide en el párrafo siguiente según el día de la práctica.

Realizar un ejemplo de suma y resta en binario con números de 16 bits, y presentar la
respuesta utilizando notación hexadecimal.

Realizar un ejemplo de multiplicación con números de 16 bits, para lo cual se puede emplear
el algoritmo visto en la práctica anterior (16 desplazamientos) o mediante el algoritmo de la
Fig. 1 empleando notación hexadecimal.

Realizar la siguiente división (8 bits), usando el algoritmo de la Práctica 1 con los ajustes
mencionados en esta hoja guía.
Lunes:
Martes:
Miércoles:
Jueves:
Viernes:

49/84
67/91
36/73
47/89
63/ 83
Aplicar el método de conversión de binario a BCD, mediante el algoritmo similar al de la
división, basado en desplazamientos, que se puede encontrar en la referencia de la
bibliografía. (Revisar la nota de aplicación AVR204)
Lunes
Martes
Miércoles
Jueves
Viernes
10110101
11001011
10110101
10111010
10111101
Dirección: Ladrón de Guevara E11-253
Teléfono: (02) 2976300 Ext.2209
Quito - Ecuador
Correo: [email protected]
LABORATORIO DE SISTEMAS MICROPROCESADOS
5. EQUIPO Y MATERIALES
Material de escritorio.
6. PROCEDIMIENTO
Esta práctica es una sesión tutorial sobre los temas mencionados.
7. INFORME:
El instructor indicará al final de la sesión los temas que serán incluidos en el informe.
8. REFERENCIAS:
Notas de aplicación de ATMEL AVR200, AVR201, AVR202, AVR204
http://www.atmel.com/products/microcontrollers/avr/default.aspx?tab=documents
Responsables.
Marco Herrera, MSc.
Ing. Jhon Pilataxi
Dirección: Ladrón de Guevara E11-253
Teléfono: (02) 2976300 Ext.2209
Quito - Ecuador
Correo: [email protected]