L'operatore MOD lo puoi usare solo se il secondo parametro è costante, altrimenti devi fare una divisione e prendere il resto.
Ti consiglio le modifiche in rosso nel sorgente
codice:
SUB EAX,EAX
SUB EBX,EBX
SUB ECX,ECX
SUB EDX,EDX
CMP Num,2
JZ J1 ;Salta se Num=2
CMP Num,2
JNGE J2 ;Salta se Num<2
MOV EAX,Num
SHR EAX,1
MOV EBX,2 ;EBX=D=2
L1:
PUSH EAX
MOV EAX,Num
SUB EDX,EDX
DIV EBX
POP EAX
CMP EDX,0
JZ J3 ;Salta se EDX=0
INC EBX ;D++
CMP EBX,EAX
JG J4 ;Salta se D>MaxDiv
JMP L1 ;Loop
J1:
J4:
MOV Ris,1
JMP J5
J3:
J2: MOV Ris,0
J5: