;名称:divdw
;功能:进行不会产生溢出的处罚运算,被除数位dword型,除数位word型,
; 结果诶dword型
;参数:(ax)=dword型数据的低16位
; (dx)=dword型数据的高16位
; (cx)=除数
;返回:(dx)=结果的高16位,(ax)=结果的低16位
; (cx)=余数
;给出公式:
;X:被除数,范围:[0,ffffffff]
;n:除数,范围:[0,ffff]
;h:x高16位,范围:[0,ffff]
;l:x低16位,范围:[0,ffff]
;int():描述性运算符,取商
;rem():描述性运算符,取余数
;X/N=int(h/n)*65536+[rem(H/N)*65536+l]/N
;应用举例:计算1000000/10(f4240h/0ah)
assume cs:code
code segment
start:
mov ax,4240h
mov dx,0fh
mov cx,0ah
call divdw
mov ax,4c00h
int 21h
divdw:
push ax
mov ax,dx
mov dx,0
div cx
;结果 dx位余数亦下一次计算的被除数的高位,ax为商
mov bx,ax;bx为高16位
pop ax
div cx; ax为低16位,dx为余数
mov cx,dx
mov dx,bx
ret
code ends
end start |