-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: kommazahl / kommazahl in assembler

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    15.07.2004
    Alter
    38
    Beiträge
    196

    kommazahl / kommazahl in assembler

    Anzeige

    da ich normalerweise alles in c schreib nun aber doch mal assembler benötige (was mittlerweile auch ganz gut klappt) bin ich mit meinem wissen am ende...
    wie schreib ich eine routine die mir einfach 2 kommazahlen dividiert??? also zb 285.9375/7.586 ???? die genauigkeit auf 4 stellen hinterm komma sollte schon gegeben sein..
    hab nen mega128 also da ist ein hardware multiplier mit drin (mul,muls,mulsu,fmul,fmuls,fmulsu-befehle)aber eine einfache multiplikation ist damit ja schon ziemlich aufwendig... da mein projekt aber ziemlich zeitkritisch ist und ich auch nicht den µc zumüllen will muss ich halt auf assembler zurückgreifen. ich hoff doch mal das ihr mir helfen könnt
    mfg

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.12.2004
    Ort
    LEV
    Beiträge
    505
    Hallo,
    du kannst fertige Floatingpoint-Routinen benutzen,
    die gibt es glaube ich bei Atmel. Das kostet natürlich
    jede Menge Rechenzeit und Speicherplatz,

    Wenn du mit Festkommazahlen klarkommst,
    dann kannst du einfach mit grossen Integerzahlen
    ganz normal ganzzahlig Rechnen, und das Komma nur
    "virtuell" mitführen, und es falls nötig, bei einer
    Ausgabe auf Display oder so mit einfügen.
    Also statt 123,456 rechnest du einfach mit 123456.
    und denkst dir das Komma.
    Die Ergebnisse stimmen trotzdem, du musst nur
    eine feste Zahlenlänge definieren und beibehalten.
    z.B. 32-Bit = 4 Byte geht von -2147483648 bis +2147483648.
    Mit vier Stellen hinter dem Komma dann eben
    von -214748,3648 bis 214748,3648
    Dafür kannst du damit in Assembler
    einfach, genau und blitzschnell rechnen.

    Gruß Jan

  3. #3
    Erfahrener Benutzer Begeisterter Techniker Avatar von engineer
    Registriert seit
    24.01.2005
    Ort
    Raum Frankfurt
    Beiträge
    264
    Ja, wie hier oben drüber geschrieben zusätztlich: Wenn Du weisst in welchem Zahlenbereich Deine Rechnungen jeweils laufen, so kann man das Komma an verschiedenen Stellen immer etwas anders iontegpretieen um die Auflösung besser zu nutzen. So könnte man bei bestimmten Rechnbungen mal einen Faktor 4 oder 8 drinlassen und ihne an derderer Stelle berücksichtigen

    Ich nennen sowas "binäres Ausklammern"

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    15.07.2004
    Alter
    38
    Beiträge
    196
    ok das mit dem "virtuellem" komma hab ich nicht gewusst. ah ich glaub ich habs gerafft.. naja ganz schön umständlich
    also danke für die antworten

    @janB :wo gibts die routinen hab nix gefunden
    mfg

  5. #5
    Erfahrener Benutzer Begeisterter Techniker Avatar von engineer
    Registriert seit
    24.01.2005
    Ort
    Raum Frankfurt
    Beiträge
    264
    sag mal tristae, Dein UserICon errinnert mich schwer an einen user auf www.kaltmacher.de. Bist Du das ?

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    15.07.2004
    Alter
    38
    Beiträge
    196
    Nein, seh dort aber mom eh keine bildchen

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    15.07.2004
    Alter
    38
    Beiträge
    196
    mh jetzt nochmal zum thema gibts da nicht irgendwelche fertige routinen die man einfach einbinden kann ich muss eine x^4 funktion mit werten füttern die mir dann ein bestimmtes pulsmuster liefert nur mit den ganzzahlen + "virtuellem" komma gibt das ein riesigen code bei dem ich noch nicht mal weiss ob er für alle meine zahlen auch funktioniert...

    na hier mal die funktion:

    alpha= variable
    verh=11.4583
    p=alpha*verh
    a=0.00125*p^4 - 0.002325*p^2
    y=0.03*x^4/a-0.14*x^2/a+4.6
    y=y*1000

    gut ne??? soll mal ne motorsteuerung werden(sanftanlauf + sanftstop)
    mfg

  8. #8
    Erfahrener Benutzer Begeisterter Techniker Avatar von engineer
    Registriert seit
    24.01.2005
    Ort
    Raum Frankfurt
    Beiträge
    264
    naja, für die p^4 benötigt man aber keine Funktion oder ? Zeimal quadrieren würde ich sagen. Du weisst, wie man binär multimpliziert ?

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    15.07.2004
    Alter
    38
    Beiträge
    196
    das problem ist nicht die p^4 sondern eher die ganzen kommas

    unter funktion meinte ich eine "mathematische funktion" also quadratische, kubische...usw

    na ich glaub ich bleib doch beim guten alten c mir ist das viel zu umständlich

    mfg

  10. #10
    Erfahrener Benutzer Begeisterter Techniker Avatar von engineer
    Registriert seit
    24.01.2005
    Ort
    Raum Frankfurt
    Beiträge
    264
    Eine Lib in ASM habe ich nicht zur Hand- aber es gibt solche. Diese sind aber auf die Architektur (8,16,32) zugeschnitten. Da würde ich mal googeln. An Deiner Stelle würde ich ein paar Standarrealisatioen nachprogrammieren. Die binäre Multiplikation ist an vielen Stellen erklärt und funktioniert sehr effektiv. Vergiss nicht, daß diese Operatione um Größenornungen schneller laufen, als Fließkomma!

    Wenn Du ein Auflösungsproblem hast, nimm einfach mehr Bytes: Auch in der professionellen Digitaltechnik macht man das so: Es gibt inzwischen Hersteller von Studiotechnik, die programmieren ihrer DSPs in den Pulten lieber in 48Bit binär, als mit 32 Bit Float.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •