可能重复:
ASM x86 integer overflow
我得到一个除法错误溢出,我不知道为什么。 以下是重现错误的完整代码
include emu8086.inc
org 100h
mov ax, 2
mov bx, 10
div bx
mov ax, 2
mov bx, 2
div bx
ret
答案 0 :(得分:7)
尝试在每个xor dx, dx
之前添加div
,看看是否有帮助。
由于您指定的是16位目标,div
会将dx:ax
除以该目标。如果dx
开始包含大量数字(更准确地说,只有非常小的数字),结果将溢出。即使它没有溢出,您的结果也不会像您显然想要的那样ax
/ bx
。