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 ...