Suppose we want to multiply a (multiplicand) by b (multiplier).

We have 4 registers used: multiplicand register (contains copy of multiplicand), multiplier register (contains cope of multiplier), shifted multiplicand register, and result register.

For each bit in the multiplier, if a bit == 1, copy the multiplicand register contents, left shifted by the number of bits we've seen already, to the shifted multiplicand register (else copy 0 to shifted multiplicand register), and then add shifted multiplicand register to result register.

Very similar to normal mult; when we multiply by next multiplier digit in decimal, we shift our answer to the left by number of digits we've seen.