So the book I have has a range of Multiplication routines depending on what one needs. It was written back in 1985/6, so they may have been improved upon.

For Simple 8-bit multiplication:

`; Unsigned 8 bit multiplication`

.begin

equ &7000

.top

equ begin+&100

.number

equ top

.mult

equ top+1

.prod

equ top+2

org begin

ld a,(number)

ld e,a

ld a,(mult)

ld hl,0

ld d,l

ld b,8

.shift

add hl,hl

rla

jr nc,over

add hl,de

.over

djnz shift

ld (prod),hl

ret

Entry : two 8bit numbers in &7100, &7101

Result in &7102

`; Unsigned 16bit multiplication`

.begin

equ &7000

.top

equ begin+&100

.number

equ top

.mult

equ top+2

.prod

equ top+4

org begin

sub a

ld c,a

ld e,a

ld d,a

ld b,16

ld hl,(mult)

.shift

sla e

rl d

rl c

rla

add hl,hl

jr nc,over

push hl

ld hl,(number)

add hl,de

ex de,hl

pop hl

jr nc,over

inc c

jr nz,over

inc a

.over

djnz shift

ld b,a

ld (prod),de

ld (prod+2),bc

ret

Entry : two 16bit numbers in &7100, &7101 and &7102, &7103

Result in &7104, &7105

`;; Signed 16 bit multiplication`

.begin

equ &7000

.top

equ begin+&100

.number

equ top

.mult

equ top+2

.prod

equ top+4

.flag

equ top+6

org begin

ld c,0

ld hl,(number)

bit 7,h

jr z,second

inc c

ex de,hl

ld hl,0

and a

sbc hl,de

ld (number),hl

.second

ld hl,(mult)

bit 7,h

jr z,start

dec c

ex de,hl

ld hl,0

and a

sbc hl,de

.start

ld de,0

ld b,16

.shift

sla e

rl d

bit 7,d

jr nz,error

add hl,hl

jr nc,over

ld a,(number)

add a,e

ld e,a

ld a,(number+1)

adc a,d

ld d,a

bit 7,d

jr nz,error

.over

djnz shift

ld a,c

and a

jr z,plus

ld hl,0

sbc hl,de

ex de,hl

.plus

ld (prod),de

sub a

.finish

ld (flag),a

ret

.error

ld a,&ff

jr finish

Entry : two 16bit numbers in &7100, &7101 and &7102, &7103

Result in &7104, &7105