Having taken a course on compilers and making a rudimentary one by myself, i still have this lingering doubt about the first compiler.
From a high to low level, i se
"Hardware", mostly the CPU and memory, is pretty much a finite state machine. Its states/outputs and inputs are roughly the contents of the registers and memory.
Your program compiled down to the machine codes that the FSM "understands" drives the FSM from state to state. That's how "hardware runs assembly".
Unless the first assembler/compiler is cross-compiled (developed and compiled on a different platform), the first one is written and translated to machine codes manually and then those are typed in.