Autor |
ATMEL 2313 Multiplikation |
|
|
|
|
BID = 38023
lynx Gerade angekommen
Beiträge: 10
|
|
hallo an alle!
ich habe folgendes problem: ich müsste in meinem prog ein register mit 6 mulitplizieren, nur is mir nicht ganz klar, wie ich das anstellen soll, da der 2313er ja nicht von haus aus multiplizieren kann.
mit rotate würd sich maximal eine multiplikation mit 4 oder 8 machen lassen, vielleicht hat ja jemand von euch eine idee, wie ich das machen könnte
schonmal vielen dank im vorraus für eure hilfe
cu
|
|
BID = 38036
Gurney Gesprächig
   Beiträge: 193 Wohnort: Stuttgart
|
|
Nun, ich hoffe addieren kann der 2313 Wenn ja, dann kannst du ja einfach den Wert deines Registers in ein weiteres Register laden und mithilfe einer Schleife oder so 5 mal zu deinem Register dazuaddieren... |
|
BID = 38043
lynx Gerade angekommen
Beiträge: 10
|
klar kann er addieren ;)
das mit dem addieren is mir schon klar, hab aber nach einer etwas eleganteren lösung gesucht.
außerdem haben sich meine vorgaben ein wenig geändert, ich brauch nun einen multiplikation mit 12.
zur zeit mach ich das so:
zuerst zweimal den gleichen wert hinzuaddieren, dann 2mal rotieren. (der erste vorgang entspricht *3, der zweite vorgang *4, 3*4=12)
wenn jemand von euch einen eleganteren weg kennt, wär ich sehr dankbar für einen vorschlag
|
BID = 38054
Verion Gelegenheitsposter
 
Beiträge: 90
|
|
BID = 38082
Jornbyte Moderator
      
Beiträge: 7243
|
Mal auf die schnelle:
.include "2313DEF.INC"
.CSEG
.ORG 0
_Reset:
ldi yl,low(RAMEND)
out SPL,yl
sbiw yl,28
ldi r24,low(2000);Multiplikant
ldi r25,high(2000)
ldi zl, 12 ; Multiplikator
clr zh
rcall Mp16u
; Rückgabewert in zl und zh
;////// 16x16 unsigned multiplay //////////
Mp16u:
clr r23
clr r22
ldi r21,0x10
lsr zh
ror zl
m16u1:
brcc m16u2
add r22,r24
adc r23,r25
m16u2:
ror r23
ror r22
ror zh
ror zl
dec r21
brne m16u1
ret
_________________
mfg Jornbyte
Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten.
|
BID = 39431
Roboter Gerade angekommen
Avatar auf fremdem Server ! Hochladen oder per Mail an Admin
Beiträge: 13
|
Im Roboternetz im Forum AVR Programmcode hat glaub die Woche jemand einen längeren Sourcecode zur Multiplikation / DIvision gepostet. Schau unter http://www.roboternetz.de Schau auch mal in den Downlaodbereich dort
|
BID = 39434
perl Ehrenmitglied
       
Beiträge: 11110,1 Wohnort: Rheinbach
|
Eine Multiplikation mit 6, wie verlangt, kann man einfacher haben:
x einmal schieben ---> 2x ; als Zwischenergebnis merken
2x einmal schieben ---> 4x; und als letztes:
4x + 2x --> 6x
_________________
Haftungsausschluß:
Bei obigem Beitrag handelt es sich um meine private Meinung.
Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.
Besonders VDE0100; VDE0550/0551; VDE0700; VDE0711; VDE0860 beachten !
|