Rather than mixing 16-bit and 8-bit multiplies, think of M and N as 32-bit values (with leading zeroes). Then you have MH:ML × NH:NL.
MH × NL, MH × NH + CARRY. Shift left 16 bits, add ML × NL + CARRY, ML × NH + CARRY.
When multiplying AND adding, use the 16-bit "Multiply Accumulate" instruction EMACS.