Forum: Mikrocontroller und Digitale Elektronik Dividierroutine ?????


von Mensaman (Gast)


Lesenswert?

Hi Leuts!
Habe mal ein frage weiss vielleicht einer von euch wo es eine
dividierroutine von einer 8bit dualzahl durch eine 10(dezimal) gibt?
Bzw. 8bit dual durch 8bit dual(rest muesste ich mir dann Ableiten)
Waere super wenn irgenwo gut erklaert stehen wuerde damit man es auch
versteht.Ptogrammiere in Assembler.

von Andi (Gast)


Lesenswert?

Und auf welchem µC programmierst Du mit Assembler?

Gruß
Andi

von Mensaman (Gast)


Lesenswert?

atmel atmega8

von Andi (Gast)


Lesenswert?

Wenn Du AVR-Studio verwendest gibs in dem Ordner AppNotes 2 .asm-Files
wo für Deine Zwecke was dabei ist.
Ansonsten bei www.atmel.com nach diesen AppNotes suchen.
Gruß
Andi

von Daniel (Gast)


Lesenswert?

Hi.
Hab das vor kurzem in VHDL "geschrieben" oder besser
"beschschrieben" :-)

Mir hat da sehr dieses Dokument geholfen, wo das sehr gut erklärt ist:

http://www.rs.uni-siegen.de/Lehre/skripte/Rechner_Arithmetik/kap5_1bis30.pdf


Gruß,
Daniel

von thkais (Gast)


Lesenswert?

Es läuft im Endeffekt auf das Gleiche hinaus, wie bei der
Multiplikation. Wenn man noch gelernt hat, von Hand zu dividieren,
kommt man relativ einfach auf den Algorithmus.
Beispiel: 86 / 10

214 = binär 11010110, 10 = binär 00001010

Man muß allerdings den Divisor (in diesem Fall die 10) normalerweise 8
Mal in einem 16-Bit Register shiften. Wenn der Divisor immer 10 ist,
kann man das natürlich optimieren.
Wir beginnen mit der 10 4x nach links geshiftet, oder auch
"normalisiert", d.h. die führende 1 linksbündig.

214=      11010110
         -10100000  geht, also     1 (MSB)
          ---------
          00110110
shift>>  -01010000  geht nicht, -> 0

          00110110
shift>>  -00101000  geht ->        1
         ----------
          00001110
shift>>   00010100   geht nicht  ->0

          00001110
shift>>   00001010   geht          1 (LSB)
          ---------
              0100  = Rest         |_ Ergebnis 10101

= 21 Rest 4

von thkais (Gast)


Lesenswert?

Ups, natürlich ist es im Beispiel nicht 86/10, sondern 214 /10...

von Thomas K (Gast)


Lesenswert?

@Daniel:
Solche Links find ich immer super zu Uni-Material! :-)
Ist das ein Zufall, dass nur Rechnerarithmetik frei zugänglich ist? :(

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.