/* * fsqrt16.asm * Created: 07.09.2011 15:24:06 * Author: Marko Surup * AVR-Studio5, 8bit-AVR * Register r1:r0 Arbeitsregister (fix) * r19:r18 Arbeitsregister (nur r31:r16 wegen cpc-Befehl) * r17:r16 Zahl (r31:r2) * r20 Ergebnis,Integeranteil (r31:r2) * Laufzeit 63 Takte !!!, fix */ .org 0x00 rjmp init .equ Zahl = 345 .def ergeb = r20 init: ldi r16, HIGH(RAMEND) out SPH, r16 ldi r16, LOW(RAMEND) out SPL, r16 ldi r17, HIGH(Zahl) ldi r16, LOW(Zahl) fsqrt16:ldi ergeb, 128 ldi r19, HIGH(16384) ldi r18, LOW(16384) cp r16, r18 cpc r17, r19 brsh PC+2 subi ergeb, 128 subi ergeb, 192 mul ergeb, ergeb movw r19:r18, r1:r0 cp r16, r18 cpc r17, r19 brsh PC+2 subi ergeb, 64 subi ergeb, 224 mul ergeb, ergeb movw r19:r18, r1:r0 cp r16, r18 cpc r17, r19 brsh PC+2 subi ergeb, 32 subi ergeb, 240 mul ergeb, ergeb movw r19:r18, r1:r0 cp r16, r18 cpc r17, r19 brsh PC+2 subi ergeb, 16 subi ergeb, 248 mul ergeb, ergeb movw r19:r18, r1:r0 cp r16, r18 cpc r17, r19 brsh PC+2 subi ergeb, 8 subi ergeb, 252 mul ergeb, ergeb movw r19:r18, r1:r0 cp r16, r18 cpc r17, r19 brsh PC+2 subi ergeb, 4 subi ergeb, 254 mul ergeb, ergeb movw r19:r18, r1:r0 cp r16, r18 cpc r17, r19 brsh PC+2 subi ergeb, 2 subi ergeb, 255 mul ergeb, ergeb movw r19:r18, r1:r0 cp r16, r18 cpc r17, r19 brsh PC+2 subi ergeb, 1 end: rjmp end