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.
Here's what the main microcode loop for multiplication looks like. It rotates values right through carry (RRCY) and does ADDs subject to conditions. (Σ is the output from the ALU.) This loop executes 16 times to multiply 16-bit words.