Programmer should know that in this case(dividing of dword) after such instructions as 'div' and 'idiv' the remainder stores in 'edx'. And of course 'edx' will changes
And 'mul' may also corruptes 'edx'. Also flags are corrupted(even if you do just eax += ebx). But you do not save flags.
My point that such things should be documented. But our documentation still not have needed explanation about it.