8051 división de BCD de 24 bits

0

Actualmente estoy trabajando en un programa de ensamblaje 8051 que recibe un conjunto de entradas BCD y calcula la media de este conjunto. Sin embargo, no pude encontrar una manera decente de dividir el número BCD de 24 bits. Por ejemplo, digamos que la suma de la serie es 154128 y estoy almacenando estos datos en 3 bytes: 15H, 41H, 28H y necesito dividir esto por 13. ¿Alguna idea de cómo debo proceder? Gracias ya.

    
pregunta İlker Demirel

1 respuesta

1

Hay dos métodos muy simples. Lo más simple es simplemente restar sucesivamente 13 de 15 41 28 y contar el número de veces antes de que el resultado sea negativo. Es terriblemente ineficiente, pero finalmente dará la respuesta correcta para la parte entera del cociente dar o tomar una. Un algoritmo O (n) por lo que puede ser muy lento para dividendos grandes y pequeños divisores.

El segundo es usar el algoritmo de resta y cambio que aprendiste en la escuela primaria. Puedes hacer esto con los números BCD. Reste hasta 9x y si el resultado es negativo, luego vuelva a agregarlo, de modo que tenga hasta 10 operaciones por dígito de resultado, así que O (log (n)). Las calculadoras de bolsillo utilizarán algo como este algoritmo. Debería poder diseñar, implementar y probar este algoritmo en un par de horas a lo sumo.

Un tercer enfoque sería convertir el número a binario, hacer los cálculos y luego volver a convertir, lo que podría tener sentido si hay muchos cálculos por hacer, pero sería más lento que la división BCD.

    
respondido por el Spehro Pefhany

Lea otras preguntas en las etiquetas