;名称:divdw
;功能:进行不会产生溢出的除法运算,被除数为DWORD型,除数为WORD型,结果为DWORD型
;参数(ax)=dword型数据低16位,(dx)=dword型数据高16位,(cx)=除数
;返回(dx)=结果高16位,(ax)=结果低16位,(cx)=余数
;目标:计算1000000/10(f4240h/0ah)
;结果:(dx)=1,(ax)=86a0h,(cx)=0
assume cs:code
code segment
start:mov ax,4240h
mov dx,0fh
mov cx,0ah
call divdw
mov ax,4c00h
int 21h
divdw:mov si,ax ;存储参数
mov ax,dx
mov dx,0
div cx
mov bx,ax ;高位运算商
mov ax,si
div cx ;低位运算商
mov cx,dx
mov dx,bx
ret
code ends
end start
- [linfeng0928] 谢谢! 12/08 20:04
- [tomato] 没问题。只是,没有解决除法溢出的问题,只针对这个数据没问题,但是,一旦换个大些的数据有可能出现除法溢 05/10 23:47
- [linfeng0928] 虽然遇到问题但还是要努力去完成。 05/02 00:38
- [fpamc] mov ax,[54h+2+si] 这个指令可以这样写吗?两个立即数。 我想,mov ax 04/09 23:34
- [tomato] 时隔这么长时间,博主又开始重新学习了? 这个程序做的我看没有问题。 04/09 23:25