+ -
当前位置:首页 → 问答吧 → 【虎彡】32位无符号除法运算,需要注释

【虎彡】32位无符号除法运算,需要注释

时间:2010-12-23

来源:互联网

我数学好烂!~
求注释 注释~

;无符号数的32位值除以16位值 
;入:DXAX=被除数 
; CX=除数 
;出:DXAX=商 
; BX=余数 
;=============================== 
subn_32v16 proc near 
push ax ;低16位保存
mov ax,dx ;高位送入ax
mov dx,0  
div cx ;除16位数
mov bx,ax ;商送bx 
pop ax ;恢复低16位
div cx ;除16位数
xchg bx,dx ;bx=yushu ,DX,AX=商
ret 
subn_32v16 endp 
;=============================== 
;无符号数的32位值除以32位值 
;入:DXAX=被除数 
; CXBX=除数 
;出:DXAX=商 
; CXBX=余数 
;=============================== 
subn_32v32 proc near 
test cx,cx ;除数高16是0吗
jnz sss_1 ;不是转
mov cx,bx ;除数低16送入cx
call subn_32v16;调用无符号数的32位值除以16位的除法子程序
xor cx,cx  
ret 
sss_1: 
push di  
xor di,di  
sss_lp1: 
sub ax,bx  
sbb dx,cx 
jc sss_out 
inc di 
jmp sss_lp1 
sss_out: 
add bx,ax 
adc cx,dx 
mov ax,di 
mov dx,0 
pop di 
ret 
subn_32v32 endp

作者: znxllyuan   发布时间: 2010-12-23

好像没什么要注释了的吧,不都已经有了麽。就是 subn_32v32 子程后面,如果除数的高位 word cx 不为 0 时,直接就是被除数减除数了,直减到小于 0 为止;减的次数就是商。

作者: zara   发布时间: 2010-12-23