This question already has answers here:
Closed 7 years ago.
Possible Duplicate:
ASM x86 integer overflow
I get a divide error- overflow and am not sure why.
Here is the complete code that reproduces the error
include emu8086.inc
org 100h
mov ax, 2
mov bx, 10
div bx
mov ax, 2
mov bx, 2
div bx
ret
Try adding xor dx, dx
before each div
and see if that doesn't help.
Since you're specifying a 16-bit target, div
divides dx:ax
by that target. If dx
starts out containing a large number (more accurately, anything but quite a small number), the result will overflow. Even if it doesn't overflow, your result won't just be ax
/bx
as you apparently intend.