[ lancha131 @ 14.03.2011. 23:12 ] @
Ekipa,napravio sam assemblerski kod koji izracunava n Faktorijel za dati broj n...
akcenat je bio na tome da se odradi iterativno,sto nije bio neki problem,mada bi rekurzija ovo mnogo efikasnije resila :)...
Medjutim sad mi je potrebno da ovaj kod prebacim tako da izracunava faktorijel u dvostrukoj preciznosti..
Razumem kako to ide,medjutim sama implementacija mi pravi problem..pretpostavljam da bi trebalo uvesti par promenljivih,da bio ostavio prostora za registre...
da li bi neko mogao da mi pomogne ?



#program izracunava n faktorijel i cuva ga u EBX
#autor LaNcHa

.section .data
n=5 #program racuna 5!
jedanmanji=4 # poocna promenljiva ,sledi iz definicije faktorijela
.section .text
.globl main
main :
movl $n ,%ebx # registar ebx cuva vrednost faktorijela
movl $jedanmanji,%ecx #pomocnu promenljivu smesta u registar ecx
movl $0,%edx # edx jos jedan pomocni registar za kumuliranje
movl $n ,%eax

uporedi :
movl $1,%edi # edi ce da cuva vrednost i za loop
movl $0,%edx
cmpl $1,%ecx #petlja ide dokle god za jedan manja vrednost od n
jbe kraj #ne dodje do jedinice

mnozi :

cmpl %edi,%ebx # pocetak while petlje koja radi mnozenje p s ,poredi i i n
jb drugi
addl %ecx,%edx # u edx dodaje vrednost (n-1)
inc %edi
jmp mnozi

drugi :
decl %ecx #smanjuje x-1 za 1, tj na x-2
movl %edx,%ebx
jmp uporedi



kraj :
movl $1,%eax
int $0x80