divdw: ;公式:X/N=int(H/N)*65536+[rem(H/N)*65536十L]/N
push bx
push cx
push di
push si ;可能用到的寄存器入栈
push ax ;被除数低字入栈
mov ax,dx
sub dx,dx
div cx ;计算H/N
push dx ;余数压栈
mov dx,ax ;int(H/N)*65536
sub ax,ax ;ax清空
mov di,dx
mov si,ax ;di保存高字,si保存低字
pop dx ;ren(H/N)*65536,ax已空
pop bx ;bx=L
add ax,bx ;ax,dx=rem(H/N)*65536+L
div cx ;再除以N,结果在ax中余数在dx中
mov dx,0 ;余数清零
add ax,si ;
adc dx,di ;计算结果
pop si
pop di
pop cx
pop bx
retf |