Wita, mam taki kod liczący wzór newtona. Proszę o poradę w jaki sposób go zmodyfikować aby liczył kilka wartości np dla n=7 i k od 3-6, myślałem, aby zapisywał do "tablicy" a poźniej po kolei je wyświetlał np tak:
n=x k=x wynik =xxx
n=x k=x wynik =xxx
n=x k=x wynik =xxx
n=x k=x wynik =xxx
.....

itd. Oto kod programu:

argN = 10
argK = 7
.data
BuforN:
.skip 10
Buf_sizeN =.- BuforN

BuforK:
.skip 10
Buf_sizeK =.- BuforK

BuforWynikowy:
.skip 100
Buf_size =.- BuforWynikowy

BuforWynikowyP:
.skip 100
Buf_sizeP =.- BuforWynikowyP

SilniaN: #; silnia N
.skip 10
SilniaN_size =.- SilniaN

SilniaK: #; #; silnia K
.skip 10
SilniaK_size =.- SilniaK

SilniaNMK: #; tu bedzie silnia (n-k)!
.skip 10
SilniaNMK_size =.- SilniaNMK

Przerwa:
.ascii "\n"

WynikTo:
.ascii "Wynik to: "
WynikTo_size =.- WynikTo

.text
.globl _start
.globl silnia
.globl licznik
_start:



jmp Start

.type licznik, @function #; ECX = argument, EAX = wynik
licznik:
inc %ecx
mull %ecx
cmpl $argN, %ecx
jb licznik
ret

.type silnia, @function #; ECX = argument, EAX = wynik
silnia:
mull %ecx
cmpl $0, %ecx
decl %ecx
jne silnia
ret

Start:
movl $argN, %eax
movl $argK, %ebx
subl %ebx, %eax
inc %eax #; n-k+1, 
movl %eax, %ecx
call licznik
movl %eax, %ebx #;licznik w %ebx
movl $1, %eax
movl $argK, %ecx
call silnia #;mianownik w %eax
movl %eax, %ecx
movl %ebx, %eax
divl %ecx, %eax


print: #; Wyswietlanie wyniku , wynik podany jako EAX

xorl %edx, %edx
xorl %ecx, %ecx

movl $0, %edi
dziel:
movl $10, %ebx
xorl %edx, %edx
divl %ebx
pushl %eax
movl %edx, %eax
addl $48, %eax
movb %al, BuforWynikowy(,%ecx,1)
incl %ecx
popl %eax
cmpl $0, %eax
jne dziel


movl $0, %edx
incl %ecx
poprawnyNapis:
decl %ecx
movb BuforWynikowy(,%ecx, 1), %al
movb %al, BuforWynikowyP(, %edx, 1)
incl %edx

cmpl $0, %ecx
jnz poprawnyNapis


movl $4, %eax
movl $1, %ebx
movl $WynikTo , %ecx
movl $WynikTo_size , %edx
int $0x80



movl $4, %eax
movl $1, %ebx
movl $BuforWynikowyP , %ecx
movl $Buf_sizeP , %edx
int $0x80


movl $4, %eax
movl $1, %ebx
movl $Przerwa , %ecx
movl $1 , %edx
int $0x80




movl %eax, %ebx
movl $1, %eax
int $0x80