所谓的除法溢出超过寄存器的存储范围.例如对于div bx,此时寄存器是16位,算出来的商超过了16位,AX(保存商的寄存器)无法保存超过16位的数据。
解决方法:例如803/7为例,先拿8/7等于商为1,余数为1,接着余数1乘以10加上0/7为商为1,余数为3,接着再拿余数3乘以10加上3为33/7商为4余数5,那么最后的结果就位商为114,且余数为5
assume cs:code,ss:stack
stack segment stack
db 256 dup (0)
stack ends
code segment
start:
mov ax,0FFFFh
mov dx,0ffffh
mov bx,4h
push ax
mov ax,dx
xor dx,dx;dx清0, xor dx,dx 比mov dx,0快
div bx
mov cx,ax
pop ax
div bx
mov ax,4c00h
int 21h
code ends
end start