Come lavora DIV su operandi a 16 bit:
If operand is op16, unsigned AX = DX::AX / op16 and DX = DX::AX % op16

Quindi per risolvere potresti azzerare il contenuto di DX prima di ogni divisione

codice:
mov dx,0
mov ax,num
mov bx,base
div bx
;...ecc
bye