1
我得到一个鸿沟无差错溢出,我不知道为什么。 这里是再现错误的完整代码
include emu8086.inc
org 100h
mov ax, 2
mov bx, 10
div bx
mov ax, 2
mov bx, 2
div bx
ret
我得到一个鸿沟无差错溢出,我不知道为什么。 这里是再现错误的完整代码
include emu8086.inc
org 100h
mov ax, 2
mov bx, 10
div bx
mov ax, 2
mov bx, 2
div bx
ret
尝试每个div
之前添加xor dx, dx
,看看是否有没有帮助。
由于您指定了16位目标,因此div
将dx:ax
除以该目标。如果dx
开始包含大量数字(更准确地说,只是数字很小),结果会溢出。即使它没有溢出,你的结果也不会仅仅是ax
/bx
,正如你明显打算的那样。
感谢您的快速回复和解释。完美地工作 –
对于2的乘方除法,通常使用换档。使用SHR AX,1更简单 - 不需要使用额外的寄存器。 –