⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 udivide3.asm

📁 包含几个高效的矢量运算的数学函数
💻 ASM
字号:
;; Vectorized and modified by: Jeff Axelrod
;; Original Version:	Alex Tessarolo

;;---------------------------------------------------------------------------
;;
;; Algorithm:	Quot = Num/Den
;;		Rem  = Num%Den
;;
;;		NumH	= n3|n2		QuotH    = q3|q2
;;		NumL	= n1|n0		QuotL	 = q1|q0
;;		Den	= d1|d0		Rem	 = r1|r0
;;
;;		Phase1:		t1|t0|q3|q2 = ACC After	repeating SUBC 16
;;			       ____________   times.
;;			d1|d0 )	00|00|n3|n2 = ACC Before.
;;
;;
;;		Phase2:		r1|r0|q1|q0 = ACC After	repeating SUBC 16
;;			       ____________   times.
;;			d1|d0 )	t1|t0|n1|n0 = ACC Before.
;;
;;		NOTES:	Sign extension and overflow mode must be turned	off.
;;
;;===========================================================================


	.include "ccall.asm"
	
	.def	_ti_udivide32
_ti_udivide32:
	pre_ccall 5,AR_NUM,AR_DEN,AR_QUOT,AR_REM,AR_N

	clrc	SXM			; MUST turn sign extension mode off.
					; Note: Overflow mode is off in C.

	mar *,AR_N		; AR_N = n
	mar *-,AR_QUOT				; AR_N--
	mar *+,AR_NUM
	mar *+
LOOP1:
;	lacl	div_NumH		; ACCH = 0   , ACCL = NumH
	lacl *-,AR_DEN
	
	rpt	#14
;	subc	div_Den   		; ACCH = Rem', ACCL = QuotH
	subc *   
	subc *,AR_QUOT
	
;	sacl	div_QuotH
	sacl *
	
;	xor	div_QuotH		; ACCH = Rem', ACCL = 0
	xor *-,AR_NUM
	
;	or	div_NumL		; ACCH = Rem', ACCL = NumL
	or *
	adrk #3
	mar *,AR_DEN
	
	rpt	#14	
;	subc	div_Den   		; ACCH = Rem , ACCL = QuotL
	subc *
	subc *+,AR_REM
	
;	sach	div_Rem
	sach *+,AR_QUOT

;	sacl	div_QuotL
	sacl *
	adrk #3
	mar *,AR_N
	banz LOOP1,AR_NUM

DONE:
	post_ccall 5


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -