Forum: Mikrocontroller und Digitale Elektronik 16x16 Multiplikation Pic


von markus (Gast)


Lesenswert?

Hallo!

Ich hab ein riesigen Problem. Ich brauch für meine Maturaarbeit eine 
Multiplikationsroutine, die im Assembler geschrieben ist. Sie soll Eine 
Zahl(16 Bit), die in 2 Registern aufgeschrieben ist mit einer weiteren 
solchen multiplitzieren. Wie gesagt, das ganze im Assembler Code. Weiß 
einer von euch, wo es sowas gibt, oder könnte mir die jemand vielleicht 
sogar schreiben. Das wäre echt super. Kann gegebenenfalls eine 16Bit 
Divisionsroutine anbieten.

mfg

von willivonbienemaya (Gast)


Lesenswert?

du kannst 16bit dividieren, aber nicht multiplizieren?
echt?

von markus (Gast)


Lesenswert?

das divisionsprogramm habe ich bekommen. Ich versteh grad noch zirka wie 
es funktioniert

von willivonbienemaya (Gast)


Lesenswert?

Ok, ich weiss nicht was eine Maturaarbeit ist, aber ich denke du bist 
soweit dass du in Google in etwa folgende Suche durchführen kannst:

http://www.google.de/search?hl=de&q=multiplikation+assembler&meta=&btnG=Google-Suche

Treffer nummer eins gibt sogar eine Beschreibung mit Bildern her.

von ... (Gast)


Lesenswert?

Könnte es sein, dass deine Lehrer wollen, das du das alleine schreibst? 
Ich mein, es macht doch wenig Sinn, dass die dir die Aufgabe mit dem 
Ziel geben, jemand anderes zu fragen, ob er sie für dich löst.

Hier mein gutgemeinter Rat:

Versuch dir eine Lösung zu überlegen und stell dann hier etwas 
speziellere Fragen. Keine Sau hat Lust, deine Hausaufgaben für dich zu 
machen.

von willivonbienemaya (Gast)


Lesenswert?

Warum stellst du so ne bescheuerte Frage überhaupt in der Codesammlung?

von ... (Gast)


Lesenswert?

Nochwas konstruktives:

Ihr habt doch hoffentlich in der Schule gelernt, wie man schriftlich auf 
dem Papier multipliziert. Du wirst es kaum glauben, aber das geht auch 
mit Binärzahlen. Und jetzt halt dich fest, da ist es sogar noch 
einfacher! Also probier das Multiplizieren von zwei Binärzahlen erstmal 
von Hand auf Papier aus und versuch dann einen Algorithmus zu schreiben.

von markus (Gast)


Lesenswert?

zu Willi

PIC! nicht AVR

Zu den anderen:
Matura=Abitur. Den rest des programms (eben bis auf division und 
multiplikation) habe ich selbst gemacht. auch die hatdware. bei den 
beiden sachen setze ich aus. eine multiplikation von 8x 8 bit könnte ich 
vl sogar. was ich nicht verstehe ist wie ichs machen soll, dass die 2 
register wie eines behandelt werden.

von ... (Gast)


Lesenswert?

Dafür gibts das carry flag.

von willivonbienemaya (Gast)


Lesenswert?

Zwei register können und müssen nicht wie eins behandelt werden.
Ob AVR oder PIC ist egal. Das prinzip ist das gleiche.

Hast du das konstruktive von 28.03.2007 16:19 schon getestet?

von tastendrücker (Gast)


Lesenswert?

Ich glaube 16x16 Bit Multiplikationsbeispiele für PIC sind bei Microchip 
unter den App-Notes zu finden. www.microchip.com

von markus (Gast)


Lesenswert?

ja, ich weiss dass ich mit dem 2er koplement arbeiten muss, 
rotateirgendwas-befehl. da habe ich dann die multiplikation um eine 
gerade zahl(jeweils das doppelte). was ich aber nicht verstehe ist wie 
ich es bewerkställigen sol, dass mir die bits, wenn sie in dem 
niedrigeren der zwei register schon rausfallen würden( da setzt sich das 
carry-bit, oder?) die ins höhere register übertragen kann.

von willivonbienemaya (Gast)


Lesenswert?

"
Den rest des programms (eben bis auf division und
multiplikation) habe ich selbst gemacht.
"

Was ist der Rest desProgramms?
Mir scheint dir fehlen völlig die Grundlagen.

Was habt ihr denn in der Schule schon mit den PICs gemacht?

von Katzeklo (Gast)


Lesenswert?

> Mir scheint dir fehlen völlig die Grundlagen.

Welch geistreicher Kommentar...

Was glaubst du wohl, warum er hier um Hilfe bittet? Na? Ne Idee?

von willivonbienemaya (Gast)


Lesenswert?

@  Katzeklo
Danke fürs Kompliment.

Er schrieb dass er schon was mit den PICs gemacht hätte und ihm nur noch 
die Division fehlen würde.
(Aber das hast du ja sicher gelesen.)
Jetzt scheint mir aber dass man bei den Grundlagen ansetzen muss, 
deshalb wollte ich wissen was er schon kann.

von Katzeklo (Gast)


Lesenswert?

Sorry, wenn es von mir etwas derb rüber kam, war nicht unbedingt meine 
Absicht.

von markus (Gast)


Lesenswert?

naja, ich hab den adc programiert (was allerdings nur ein nachlesen im 
datasheet und einsetzen in die richtigen register war), die 
displayanszeuerung, ansteuerung der relais, naja und die 
hardwareschaltung, div. verstärker usw.

von willivonbienemaya (Gast)


Lesenswert?

Hier ist ein guter Algorithmus für Pics beschrieben:
http://www.restena.lu/convict/Jeunes/Math/Fast_operations.htm

von Matthias (Gast)


Lesenswert?

Hier, das habe ich mir vor Ewigkeiten mal ausgedacht.
Einmal:
Z[R31:R30] mal X[R27:R26] gleich R25:R24:R23:R22
und
Z[R31:R30] durch Y[R29:R28] gleich X[R27:R26] Rest in Z(R31:R30)

Ist allerdings für AVR's..

Vielleicht nützts ja was...

von Matthias (Gast)


Angehängte Dateien:

Lesenswert?

Ja, Anhang vergessen

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.