jag hittade föresten svaret på av mina egna frågor, om nån är intresserad så kan ni ju använda denna metod för att räkna ut kvadratroten på tal från 1-32 bitar (dock får du inte några decimaler men va fan)...
det funkar så här:
(först låt oss säga att vi vill ha roten ur 36!)
ecx,ebx,edx startar med värdet 1.
ecx ökas hela tiden med 1.
ebx ökas med värdet 2
edx ökas med ebx
(ökningen sker tills edx blir lika eller större än det talet man vill ha ut)
(i detta fall 36)
så ökningen kommer se ut nått så här:
ecx: 1,2,3,4,5,6
ebx: 1,3,5,7,9,11
edx: 1,4,9,16,25,36
som ni ser är edx nu exakt 36! därför kommer kvadratroten att vara lika med ecx alltså 6 (6^2 =36!)
vi testar ett till säg ...53!
ecx: 1,2,3,4,5,6,7,8
ebx: 1,3,5,7,9,11,13,15
edx: 1,4,9,16,25,36,49,64 (64 är större än 53!, loopen avslutas)
nu använder man istället ecx-1 alltså 7! (7^2 = 49) genom att ta förra edx värdet alltså 49 och slå det minus 53 (vårat tal) får man felet alltså 4.
så 53 = 7^2 + 4
fräckt va!!!!!
det sätt borde vara det smartaste eftersom bara addition och subtraktion används, så optimeringen borde vara perfekt.
Om nån orkar och vill kan ni ju räkna ut hur många klockcyklar det tar
//law