Here is an example of 16x16->16 for you:
; MUL16 - MULTIPLY TWO SIXTEEN BIT NUMBERS WITH A 16 BIT RESULT.
; DE = MULTIPLICAND
; BC = MULTIPLIER
; HL = PRODUCT
;
; DE*BC=HL
;
EXPORT MUL16
MUL16
LD A,C ; MULTIPLIER LOW PLACED IN A
LD C,B ; MULTIPLIER HIGH PLACED IN C
LD B,16D ; COUNTER (16 BITS)
LD HL,0 ;
MULT
SRL C ; RIGHT SHIFT MULTIPLIER HIGH
RRA ; ROTATE RIGHT MULTIPLIER LOW
JR NC,NOADD ; TEST CARRY
ADD HL,DE ; ADD MULTIPLICAND TO RESULT
NOADD
EX DE,HL
ADD HL,HL ; SHIFT MULTIPLICAND LEFT
EX DE,HL ;
DJNZ MULT ;
RET
Note that your assembler (unknown to us) may require different syntax for labels and/or comments. The documentation to your assembler is the best place to find these details.