Assembly language is a human readable form of machine code. A compiler converts assembly language to the true machine code for execution on the processor.
What you pass to the CPU is not assembly but is compiled machine code.
Where you might be mistaking an extra conversion step is with the concepts of the CPU architecture, x86 or x86-64, with the actual CPU core microarchitecture. The microarchitecture is the real code or instructions that are executable by the raw core hardware, the x86 architecture wraps around that core and is converted to instructions the core understands.
Modern CPUs have very different cores and instruction sets to the processors that they were created from and in a lot of cases the old instructions were slow or could be improved on in some way or another.
Wrapping a core microarchitecture in a platform architecture allows you to realise improvements in the cores without exposing changes to the platform. It gives us a common and relatively unchanging platform while the actual execution steps taken can be wildly different.
The steps you see are
- Compiler: converts human readable instructions (assembly, C, etc.) To machine code
- CPU fetches machine code to execute
- CPU dispatcher rewrites architecture instructions to microarch instructions
- Instructions execute
On an old CPU which was designed with the same core and platform architectures step 3 would be skipped.