;子程序描述
;名称:divdw
;功能:进行不会产生溢出的除法运算,被除数为dword型,结果
;为dword型。
;参数:(ax)= dword型数据的低16位
; (dx)= dword型数据的高16位
; (cx)= 除数
;返回:(dx)= 结果的高16位,(ax)= 结果的低16位
; (cx)= 余数
;应用举例:计算1000000/10(F4240H/0AH)
;结果:(dx)= 0001H,(ax)= 86A0H,(cx)= 0
;名称:divdw
;功能:进行不会产生溢出的除法运算,被除数为dword型,结果
;为dword型。
;参数:(ax)= dword型数据的低16位
; (dx)= dword型数据的高16位
; (cx)= 除数
;返回:(dx)= 结果的高16位,(ax)= 结果的低16位
; (cx)= 余数
;应用举例:计算1000000/10(F4240H/0AH)
assume cs:code
code segment
start: mov ax,4240H
mov dx,000FH
mov cx,0AH
call divdw
mov ax,4c00h
int 21h
divdw: push bx;要用到的寄存器bx、di入栈,下面用它来暂存参数的值
push di;不要将ax,dx,cx入栈,因为程序的目的最终是要修改它们的值
mov bx,ax
mov ax,dx
mov dx,0
div cx;这一步做完以后,ax中为结果的高十六位,即int(H/N),dx中是rem(H/N)的值
mov di,ax
mov ax,bx
div cx;这一步做完以后,ax中为结果的低16位,dx中存储余数
mov cx,dx
mov dx,di
pop di
pop bx
ret
code ends
end start
;结果:(dx)= 0001H,(ax)= 86A0H,(cx)= 0