关于X/N=int(H/N)*65536+[rem(H/N)*65536+L]/N公式的例子

assume  cs:codeseg

 

stackseg segment

 

  dw 8 dup (0)

 

stackseg ends

 

codeseg  segment

 

start:  mov ax,stack

           mov ss,ax

           mov sp,10H

           mov ax,4240h;被除数为:000F4240H

           mov dx,0FH

           mov cx,0EH;除数为0EH

           call divdw;关于X/N=int(H/N)*65536+[rem(H/N)*65536+L]/N的实现

 

           mov ax,4c00h

           int 21h

 

divdw:push bx;bx中可能含有重要的数据

           push ax

           push dx

           mov dx,0

           pop ax;因为此时要做的是16位的除法,所以要设置AX,DX。根据公式这里做的是被除数的高位除以除数,被除数的高位为0FH,放到在16位除法中就应该是dx=0000h,ax=000fh

           div cx;(ax)=商,(dx)=余数

           mov bx,ax;将商送入bx中存贮

           pop ax;此时有dx(此时已经存放了高位除法的余数了)和ax构成了新的被除数了,即:rem(H/N)*65536+L

           div cx ;(ax)=最终的商低位

           mov cx,dx;(cx)=最终结果的余数

           mov dx,bx;(dx)=最终结果的商高位位

           ;商由dx和ax组成,余数为:cx

           pop bx

           ret

codeseg ends

end start

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值