16 bit Wurzel Attiny Asm

Gast #2570339
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren