%defines
in NASM work like #defines
in C - complete text replacement. So
%define vect1 qword [ebp+20]
%define vect2 qword [ebp+20+n*8]
...
fld vect1+ecx*8 ; v1
fld vect2+ecx*8 ; v2
becomes
fld qword [ebp+20]+ecx*8 ; v1
fld qword [ebp+20+n*8]+ecx*8 ; v2
which is the invalid syntax the compiler is complaining about.
How did I find this, even though I've never used NASM? I read the error and the line number. "Comma or end of line expected" sure sounds like a syntax error. Then I looked at everything in the line it was complaining about. What could be messing up the syntax? Hmm, vect2 isn't an assembly keyword, what is it? A %define
... how do they work? Google says... " The definitions work in a similar way to C". Eureka!