xiaosawanjava 发表于 2014-5-16 21:50:50

进行不会产生溢出的除法运算,被除数为dword型,除数为word型,结果为dword型

assume cs:code

code segment
start:

        mov ax,4240h        ;被除数低16位
        mov dx,0fh                ;被除数高16位
        mov cx,0ah                ;除数
       
        ;调用除法子程序
        call divdw
       
        mov ax,4c00h
        int 21h

       
        ;名称:divdw
        ;功能:进行不会产生溢出的除法运算,被除数为dword型,除数为word型,结果为dword型
        ;参数:ax = dword型数据的低16位,dx高16位
        ;返回:dx = 结果的高16位,ax = 低16位,cx = 余数
        divdw:
                push bx
               
                ;首先高16除以除数,保存低16位
                push ax
                mov ax,dx
                mov dx,0        ;清空dx
               
                div cx
                mov bx,ax        ;ax为高16的商
               
                pop ax                ;还原低16位数据,dx现在保存高16位的余数
                div cx               
               
                mov cx,dx        ;dx为余数
                mov dx,bx        ;bx先前保存的是高位商,ax不变继续保存低16的商
               
                pop bx                ;还原修改的bx的值
                ret
       
code ends
end start

www5956 发表于 2014-5-17 18:36:30

孩子奉劝你一句这么简单的 的问题还拿出来问。。你还是回去多看看书在来吧。:titter::titter::titter:
页: [1]
查看完整版本: 进行不会产生溢出的除法运算,被除数为dword型,除数为word型,结果为dword型