Sum up all odd numbers between 1 and 2n + 1
Random thoughts:


A comment that indicates what/where read_hex returns might be useful.
mov ebx, 2; mul ebx could probably be replaced with shl eax,1.
While div can be used to check for 'oddness', I believe it is an expensive solution.  How about bt?
In fact, why check for oddness every iteration of the loop?  Check once at the top and count by 2's.
If you aren't using mul/div, then you don't have to have values in specific registers.  This might help you avoid moving values from one register to another so much.




But my biggest piece of advice is to junk this whole approach and start over.

I've tried to calculate some solutions here (let me know if I've got this wrong):

n   result
0   1
1   4
2   9
3   16
4   25


Do you notice anything interesting about the numbers in the right-hand column?  Here's a hint, but before you hover over it, take a moment to try to puzzle it out yourself.  You'll feel better if you do.


   1*1 = 1, 2 * 2 = 4, 3 * 3 = 9, 4*4 = 16, 5 * 5 = 25


Or in other words:


   (n+1)2


With that in mind, there's a much faster/simpler way to calculate results, especially if n is big.