long_div 32位除法

assume cs:code,ds:data,ss:stack

data segment
	
	dd 	1000000 		;F4240H

data ends

stack segment	stack

	db 	128 dup (0)

stack ends

		

code segment

	start:	mov ax,stack
		mov ss,ax
		mov sp,128

		mov bx,data
		mov ds,bx
		
		mov bx,0

		mov ax,ds:[bx+0]
		mov dx,ds:[bx+2]

		push ax
		mov bp,sp

		mov cx,10

		call long_div
		
		mov ax,4C00H
		int 21H
; H/N = in(H/N)*65536 + (rem(H/N)*65536+L)/N
;======================================
long_div:	mov ax,dx
		mov dx,0

		div cx			;ax = in(H/N) 		dx = rem(H/N)*65536
		
		push ax
		
		mov ax,ss:[bp+0]	;L   	dx此时有rem(H/N)*65536为高位,ax中为低位
					;	组成dx ax
		div cx			;(rem(H/N)*65536+L)/N 	ax为低位商,dx中为余数

		mov cx,dx

		pop dx

		

		ret

code ends

end start		
			

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值