实验10.2_解决除法溢出的问题

;子程序描述
;名称: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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值