Autor Tema: hacer una multiplicacion con varios digitos  (Leído 2876 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado bones18

  • PIC12
  • **
  • Mensajes: 54
hacer una multiplicacion con varios digitos
« en: 05 de Marzo de 2007, 12:50:23 »
Vamos a ver,

estoy con un proyecto bastante extenso y una pequeña parte se trata de hacer una multiplicación. Tengo 5 dígitos, cada uno guardado en un byte  que forman un número de 5 cifras, es decir digito4, digito3, digito2,...,digito0. Este número he de multiplicarlo por otro igual, de 4 cifras guardado en 4 bytes(concretamente el 1,85, un el byte2 es para la coma).   

El resultado final sóo ha de tener las 5 cifras más significativas. Todo esto es para pasar un numero de 5 cifras representado en nudos nauticos a kilometros por hora.

12,34 nudos x 1,85 = cinco cifras que representan el numero en km/h

hago este proyecto en ensamblador con un pic16f876.

Hay alguna libreria que pueda ayudarme? o alguien tiene alguna idea?

gracias!



Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: hacer una multiplicacion con varios digitos
« Respuesta #1 en: 05 de Marzo de 2007, 16:14:06 »
Te sugiero que busques en www.piclist.com  , hay algunas rutinas sobre multiplicación en forma binaria pero no creo que justo se adapten a tus necesidades.  De seguro tendrás que adaptar el código.

Te sugiero conviertas el número en float , hagas uso de las rutinas de alguna rutina de multiplicación float y luego conviertas de nuevo el resultado a tu propio formato.

- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado SavageChicken

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 931
Re: hacer una multiplicacion con varios digitos
« Respuesta #2 en: 05 de Marzo de 2007, 16:42:58 »
Parece que tu problema es con assembler, si lo intentas con "C" , con pascal o basic no te sería difícil, incluso puedes compilar la rutina e incluirla en tu assembler.

Salud  8)
No hay preguntas tontas...
Solo hay tontos que no preguntan.

Desconectado bones18

  • PIC12
  • **
  • Mensajes: 54
Re: hacer una multiplicacion con varios digitos
« Respuesta #3 en: 05 de Marzo de 2007, 17:25:31 »
como se haria eso que dices?

se puede hacer una subrutina en C e incluirla en  un codigo de assembler? porque ciertamente seria mucho más sencillo y lo guardaba como última opción pero en vistas del éxito pasará a ser la primera.

anteriormente habia preguntado algo parecido y me dijeron que tendria que hacerlo al revés, empezar un código en C e incrustar lo que ya tenia hecho en ensamblador y la verdad nose por donde empezar pq son casi 6000 lineas de codigo, esta opción no me acaba de gustar...

asi pues se puede hacer SOLO una subrutina en C?

gracias

Desconectado SavageChicken

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 931
Re: hacer una multiplicacion con varios digitos
« Respuesta #4 en: 07 de Marzo de 2007, 14:29:42 »
bones18:
Como yo no me manejo mucho en C, te voy a hacer un ejemplo en pascal.
La idea es hacer una rutina lo más sencilla posible ejemplo:
Código: Delphi
  1. var
  2.    Numero1, Numero2, Resultado: float;
  3. begin
  4.    Numero1:= 12,65 //Aquí tienes que cargar el primer número a multiplicar
  5.    Numero2:= 7,36 //Aquí tienes que cargar el segundo número a multiplicar
  6.    Resultado:= Multiplicar(Numero1,Numero2)
  7. end.
  8.  
  9.    Function Multiplicar(a,b :float) : float;
  10.       Result := a*b;
  11.    end;
Luego lo compilas, y te va a generar el código assembler,  luego incorporas el código assembler que generó el compilador en tu proyecto, procurando reemplazar la parte donde cargas los valores de Numero1 y Numero2 con una rutina que carge los valores de los nudos que tu necesitas y despues llamas a la rutina de multiplicación.

A eso me refería en mi último post.

Salud  8)
« Última modificación: 07 de Marzo de 2007, 14:31:50 por SavageChicken »
No hay preguntas tontas...
Solo hay tontos que no preguntan.


 

anything