Im doing the tutorial on rich edits from iczelions site. Heres the code i have... ;========================================================================================================= StreamInProc proc hFile:DWORD, pBuffer:DWORD, NumBytes:DWORD, pBytesRead:DWORD mov eax, 100 div NumBytes mul pBytesRead invoke wsprintf, addr Buffer, addr FormatString5, eax invoke SetWindowText, hMainStatus, addr Buffer invoke ReadFile, hFile, pBuffer, NumBytes, pBytesRead, 0 xor eax, 1 ret StreamInProc endp ;========================================================================================================= What im trying to do is get the percent read and then diplay it in a status bar. But i get an overflow error. The error is at the line div NumBytes When i leave that line out, i dont get an error. If anyone has any idea why it does that, please tell me!
The div opcode divides edx:eax (a 64 bit number) by a 32-bit operand (in your case). But you have only set eax before the div instruction, not edx, so edx can be anything causing an overflow in the division (the result does not fit in eax). You'll have to clear edx before your division, either by
mov eax, 100 xor edx, edx div NumBytes
(cdq extends a dword in eax to a quadword in edx:eax) Thomas This message was edited by Thomas, on 2/21/2001 3:03:34 PM
mov eax, 100 cdq div NumBytes