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

来源:互联网 发布:基督山伯爵漫画知乎 编辑:程序博客网 时间:2024/06/13 11:34
;子程序描述
;名称: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
0 0
原创粉丝点击