Print which CPU flags are set at the start of the program
You have a bit of code duplication that could and should be removed to avoid mistakes. FASM supports macros that you can use to remove duplicated parts.

One can define a check_flag macro:

macro check_flag op1, op2
{
   local flag_not_set
   test eax, op1
   jz flag_not_set
   push eax
   push op2
   call [printf]
   pop eax
   pop eax 
flag_not_set:
}


A bit of explanation. This macro will do all the work that is required to check if a specific flag is set (specified as operand op1) and if so print the message specified by operand op2. We need to specify also our label as local so that there is no label duplication when macro is placed in code multiple times. We also keep the flags to be restored after printing.

Having this we can simplify the code a bit to basically this:

    check_flag 1h, carry_flag
    check_flag 4h, parity_flag
    check_flag 10h, aux_flag
    check_flag 40h, zero_flag
    check_flag 80h, sign_flag
    check_flag 400h, dir_flag
    check_flag 800h, OF_flag    


Which such approach it is easy to add new ones, just by writing:

    check_flag 200h, interrupt_flag


You could also add a new line to those strings so that, they are a bit separated from each other when printing like this:

  aux_flag db 'Aux flag set', 13, 10, 0 


The whole program:

format PE console
entry start

include 'win32a.inc'

section '.text' code executable

macro check_flag op1, op2
{
   local flag_not_set
   test eax, op1
   jz flag_not_set
   push eax
   push op2
   call [printf]
   pop eax
   pop eax
flag_not_set:
}

start:  pushf
    push hello
    call [printf]
    pop ecx
    pop eax

    check_flag 1h, carry_flag
    check_flag 4h, parity_flag
    check_flag 10h, aux_flag
    check_flag 40h, zero_flag
    check_flag 80h, sign_flag
    check_flag 400h, dir_flag
    check_flag 800h, OF_flag

    push p
    call [system]
    pop ecx

    push 0
    call [ExitProcess]

section '.rdata' data readable
    hello db 'The flags are: %X', 10, 0
    p db 'pause&gt;nul'
    carry_flag db 'Carry flag set', 13,10,0
    parity_flag db 'Parity flag set',13,10, 0
    zero_flag db 'Zero flag set',13,10, 0
    sign_flag db 'Sign flag set',13,10, 0
    dir_flag db 'Direction flag set',13,10, 0
    OF_flag db 'Overflow flag set',13,10, 0
    aux_flag db 'Aux flag set',13,10, 0

section '.idata' data readable import
    library kernel32, 'kernel32.dll', \
            msvcrt,   'msvcrt.dll'
    import kernel32, ExitProcess, 'ExitProcess'
    import msvcrt, printf, 'printf', \
    system, 'system'