Binary multiplication is much like long grade-school multiplication, but simpler because each step is either 0 or the multiplicand. A processor can implement this by shifting the number and adding it in each cycle of a loop. For e.g. the 6502, this was done in assembly code.
The 8086 processor uses microcode, implementing instructions with an even lower layer of micro-instructions. Each 21-bit micro-instruction could move data between registers and perform an arithmetic operation, a condition, or even a micro-subroutine call.