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

📄 math.asm

📁 HT45RM03A 在電動自行車控制器中的應用
💻 ASM
字号:
;;file name:		math file
;;this files contains math files
;;**************************************************************************
#include		ht45rm03.inc				;;if mcu body changed, it is must update
;;**************************************************************************
mathdata.		section		'data'
data0			db	?
data1			db	?

data2			db	?
data3			db	?

result0			db	?
result1			db	?
result2			db	?

count			db	?
mathtmp0		db	?
mathtmp1		db	?
mathtmp2		db	?





;;**************************************************************************
mathcode.		section		 'code'
;;unsigned 8 bits mul unsigned 8 bits
;;data0*data1=result1result0
;;input variable:		data0,data1
;;output variable:		result1result0

SBR_Unsigned8Mul8:
			clr			result0
			clr			result1
			clr			mathtmp0
			mov			a,8
			mov			count,a

L_Unsigned8Mul8Loop:
			rrc			data1
			snz			c
			jmp			L_Unsigned8Mul8Shift
			mov			a,data0
			addm			a,result0
			mov			a,mathtmp0
			adcm			a,result1
L_Unsigned8Mul8Shift:
			clr			c
			rlc			data0
			rlc			mathtmp0
			sdz			count
			jmp			L_Unsigned8Mul8Loop
			ret			
;;**************************************************************************
;;unsigned 8 bits div unsigned 8 bits
;;data0/data1 = result0
;;input variable:		data0,data1
;;output variable:		result0

SBR_Unsigned8Div8:
			clr			data0
			clr			mathtmp0
			mov			a,08h
			mov			count,a

			sz			data1
			jmp			L_Unsigned8Div8Loop
			jmp			L_Unsigned8Div8Over
L_Unsigned8Div8Loop:
			rlc			result0

			clr			c
			rlc			data0
			rlc			mathtmp0
			mov			a,mathtmp0
			sub			a,data1
			snz			c
			jmp			L_CheckUnsigned8Div8End
			mov			mathtmp0,a
			set			result0.0
L_CheckUnsigned8Div8End:
			sdz			count
			jmp			L_Unsigned8Div8Loop
L_Unsigned8Div8Over:
			ret
			
			
			
			
			
;;**************************************************************************
;;unsigned 16 bits div unsigned 8 bits
;;data2data1/data0=result1result0
;;input variable:	data2data1,data0
;;output variable:	result1result0
SBR_Unsigned16Div8:
			clr			result1
			clr			result0

			clr			mathtmp0
			clr			mathtmp1
			clr			data3
			mov			a,16
			mov			count,a

			sz			data0	   
			jmp			L_Unsigned16Div8Loop
			jmp			L_Unsigned16Div8Over
L_Unsigned16Div8Loop:
			clr			c
			rlc			result0
			rlc			result1

			clr			c
			rlc			data1 
			rlc			data2 
			rlc			mathtmp0
			rlc			mathtmp1

			mov			a,mathtmp0
			sub			a,data0   
			mov			mathtmp2,a
			mov			a,mathtmp1
			sbc			a,data3
			snz			c
			jmp			L_CheckUnsigned16Div8End
			set			result0.0
			mov			mathtmp1,a
			mov			a,mathtmp2
			mov			mathtmp0,a		 
L_CheckUnsigned16Div8End:
			sdz			count
			jmp			L_Unsigned16Div8Loop
L_Unsigned16Div8Over:
			ret
;;**************************************************************************




;;unsigned 16 bits mul unsigned 8 bits
;;data2data1*data0=result2result1result0
SBR_Unsigned16Mul8:
			clr			result2
			clr			result1
			clr			result0

			clr			mathtmp0

			mov			a,8
			mov			count,a
L_Unsigned16Mul8Loop:
			rrc			data0
			snz			c
			jmp			L_Unsigned16Mul8Shift
			mov			a,data1
			addm			a,result0
			mov			a,data2
			adcm			a,result1
			mov			a,mathtmp0
			adcm			a,result2
L_Unsigned16Mul8Shift:
			clr			c
			rlc			data1
			rlc			data2
			rlc			mathtmp0
			sdz			count
			jmp			L_Unsigned16Mul8Loop
			ret
;;**************************************************************************




public			data0
public			data1
public			data2
public			data3
public			result0
public			result1
public			result2

public			SBR_Unsigned8Mul8
public			SBR_Unsigned8Div8
public			SBR_Unsigned16Div8
public			SBR_Unsigned16Mul8

end

⌨️ 快捷键说明

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