With Linux/GNU software ".asm" files don't normally use the extension .asm and they aren't in the same format as Windows .asm files (I think they use .s).
Similarly, ".obj" files are .o and the format is different.
Similarly, ".exe" files have no conventional extension and the format is different.
So if you keep calling things ".obj file, asm file and finally an .exe file" you will get confused.
The GCC compiler package includes everything you need. It is probably already installed in your Linux system. Read its documentation for switches that determine what operation it will do and what output it will generate.
It doesn't normally compile through assembly, but it can be told to. It can be told to do each step individually.
gcc is actually a control program, not the compiler/assembler/linker. Based on the input files and the switches, it runs the compiler and/or assembler and/or linker. It also has a switch to tell it to display the commands it uses for the programs it runs.
If you want to play with the compile/assemble/link programs individually, the easiest way to find out how is to use gcc with the switches to use assembly (rather than compile directly to a .o file) and to show you the commands it uses to run the compiler, assembler and linker.