Ive not used %define or the like, as I myself am pretty new so I can't vouch for accuracy, but hopefully the following will be of help to you?
You've defined 'Array_size' as 20, and used that to reserve 20 dwords of space in your .bss section 'input1'. After you got your input you store the value from eax into 'input2' which is only a single dword of allocated space (that seems backwards to me and your comment says input1, not input2).
You then compare ecx (not sure what is in ecx) to 'array_size -1' which would be 19 by all accounts? After the comparison, there is also no conditional jumps so it would do your 'mov' instruction regardless of your cmp instruction. You then have the same code (cmp followed by a mov) which is unnecessary since nothing has changed between the two. Not sureon the purpose of these mov's either.
You then print your outmessage, followed by printing 'input1' which I suspect is correct, if the above was corrected from input2 to input1.
You probabily want something more along these lines :
;you will need to add to .data:
prompt2 db 'would you like to add another number? Please press y or n',0
enter 0,0 ; setup routine
mov edx,0 ;reset our counter
mov eax, prompt1 ; print out prompt
call read_int ; read integer
mov edi,input1 ;pointer to input
inc dword edx ;start the counter
cmp edx,21 ;does edx=21?
je end ;reached maximum size od storage space (array_size 20;))
stosb ;store value (eax only) into adress space edi(input1) by a single byte (change to stosd for dword) this instruction also increases edi to next address space automatically
mov eax, prompt2 ;add another?
call read_int ;read a 'y' or 'n' character, not really an int though, subsitute where necessary, possibly read_char?.
cmp eax,'y' ;did they say yes?
je ask_number ;if so jump to ask number
cmp eax,'n' ;otherwise did they say no?
jne add_another ;user did not select yes or no, repeat this again.
jmp end ; user selected no, end program.
;print array as one block of numbers, by pointing to input1 but you should try to space them out as single numbers i.e. 1, 2, 3, 4, 5 rather than 12345
;if none of the calling references affect edx, then edx has the number of values stored in the simple array. inlinux you need to specify how long the message to be printed is via std-out
Hope this helps. Looks like you are coding for windows and im on linux so not sure what your fucntions do exactly