Il codice che hai mostrato divide un valore a 64 bit per uno a 32. Infatti hai scritto
EDX:EAX/EBP -> EAX r EDX
Ma tu devi dividere un valore a 32 bit per uno a 16, quindi
DX:AX/BX -> AX r DX
Ovviamente, se il risultato della divisione non puo' essere contenuto in un valore a 16 bit, avrai un overflow di divisione.
Ti avevo mostrato un esempio di codice in C per la divisione per 10 che ti serviva ... non lo hai voluto usare ...