Lots of reasons, possibly. What *does* it do?
For one thing, "-f test.asm" is not a valid output format. The comination of "gcc" and ".obj" suggests you're using MinGW gcc, or Cygwin - you want "-f win32" - or you're using djgpp - use "-f coff". You probably want "-o test.exe" on the command line to gcc, not just "test.exe", also.
If those are just typos, or that doesn't help, we may need to delve into the contents of "test.asm". Or at least know what the symptoms are - "won't run" isn't much help...
Best,
Frank