Forum: Mikrocontroller und Digitale Elektronik 16 bit Wurzel Attiny Asm


von Jochen (Gast)


Lesenswert?

Hat da jemand eine Routine? Habe bis jetzt nur 32 bit Routinen gefunden 
oder solche die einen mul Befehl benötigen.
Vielen Dank!

von Udo S. (urschmitt)


Lesenswert?

Jochen schrieb:
> oder solche die einen mul Befehl benötigen.

Ja und den Mul machst du eben aus entsprechend vielen adds und shifts.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Dann nimm die 32-Bit Version und streich sie zusammen auf 16 Bits.

von spess53 (Gast)


Lesenswert?

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

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

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
Noch kein Account? Hier anmelden.