When you compile a program, the compiler produces again 2 files:
An assembly language file containing the statements of your program, and memory allocations for all used variables.
A linker response file. This file contains a list of object files the linker must link together.
The link response file is, by default, removed from the disk. Only when you specify the -s command line option or when linking fails, then the file is left on the disk. It is named link.res.
The assembly language file is converted to an object file by the assembler, and then linked together with the rest of the units and a program header, to form your final program.
The program header file is a small assembly program which provides the entry point for the program. This is where the execution of your program starts, so it depends on the operating system, because operating systems pass parameters to executables in wildly different ways.
By default, its name is prt0.o, and the source file resides in prt0.as or some variant of this name: Which file is actually used depends on the system, and on linux systems, whether the C library is used or not.
It usually resides where the system unit source for your system resides. Its main function is to save the environment and command line arguments and set up the stack. Then it calls the main program.