Modern micrprocessors use pipeline stages and have a lot of often complex instructions. There are two ways to implement these instructions one is to hard code them and the other is to micrcode them. What does that mean?
For each instruction there is a set of tasks that the processor must carry out and they will depend on the category of the instruction e.g all instructions like read memory, write memory, move memory e.t.c will require similar steps then instructions like add, substract, multiply fall into another category, then instructions like AND, OR, XOR fall into another. It is possible to physically (on silicon) design seperate "circuit paths" to execute each of these instructions. This will give us a fast design, but it will be challenging to do its physical layout and if we want to add new instructions to the ISA we have to do the physical layout again! This means that if we "hard code" the instructions and we want to upgrade our processor we shall have to rethink how to do the layout for fabrication which is going to be an expensive task.
The other alternative that engineers have come up with is to use microcodes. Thus, the processor pipeline is designed to carry out only very simple tasks and these tasks are given to it as "microcode instructions" from within the hardware itself. Now each instructions in the ISA of the processor is basically going to equal multiple "microcode" instructions in the processor. Now instead of having different physical path for the different type of instructions in the processor, we store different "microcode programs" >inside< the processor for different insturctions. A complex instruction like "mov" or "div" is thus decoded internally to determine which "microcode program" in the processor needs to be executed. The advantage here is that we think when we want to expand the instruction set, we maybe often by able to leave the physical layout of the processor the same and merely create new "microcode programs" for the new insturctions. This saves time and money when we want to upgrade out processor design. So the point is, the microcode is not known by us. We just write our program, which is compiled into machine code of say 32 bit instructions. When we pass an instruction to the processor it decodes it to multiple microcode instructions. Yes that is correct, a 32 bit instruction is further decoded into multiple even lower level "microcode" instructions inside the hardware which are invisible to us.