Hat da jemand eine Routine? Habe bis jetzt nur 32 bit Routinen gefunden oder solche die einen mul Befehl benötigen. Vielen Dank!
Jochen schrieb: > oder solche die einen mul Befehl benötigen. Ja und den Mul machst du eben aus entsprechend vielen adds und shifts.
Hi Sollte funktionieren:
1 | ; Quadratwurzel 16-8 Bit |
2 | ; |
3 | ; in : r17:r16 Wert |
4 | ; out : r16 Wurzel |
5 | ; |
6 | sqrt16: push r0 |
7 | push r1 |
8 | push r14 |
9 | push r20 |
10 | push r21 |
11 | |
12 | ldi r20,2 ; Reg Init |
13 | mov r14,r20 ; r15 = 2 |
14 | clr r21 |
15 | clr r0 ; temp.Result |
16 | clr r1 ; Null |
17 | sqrt16_10: sub r16,r20 ; Subtraktion |
18 | sbc r17,r21 |
19 | brcs sqrt16_20 |
20 | inc r0 ; Result+1 |
21 | add r20,r14 ; Increase 2 |
22 | adc r21,r1 |
23 | rjmp sqrt16_10 |
24 | sqrt16_20: mov r16,r0 ; Result |
25 | clr r17 |
26 | |
27 | pop r21 |
28 | pop r20 |
29 | pop r14 |
30 | pop r1 |
31 | pop r0 |
32 | ret |
MfG Spess
spess53 schrieb: > Hi > > Sollte funktionieren: Hab ich mich verlesen oder hat das quadratische(!) Laufzeit?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.