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

📄 cm-941.asm

📁 本程序是测试脂肪的程序,利用他可以测试一个人的身上有多少脂肪,但是精度不是很高的
💻 ASM
📖 第 1 页 / 共 5 页
字号:
		OR		R_B5
		OR		R_B6
		JNZ		StepDiv2
		LDS		R_Error,		1
		RTS
StepDiv2:		
		CALL	ClearW
StepDiv3
		LDA		R_A6
		JNZ		StepDiv3_1
		INC*	R_AP
		CALL	LeftA
		JMP		StepDiv3
StepDiv3_1:
		LDA		R_B6
		JNZ		StepDiv4
		INC*	R_BP
		CALL	LeftB
		JMP		StepDiv3_1

StepDiv4:
		CALL	CopyAtoW
		
		LDS		R_A0,		0
		LDS		R_A1,		0AH
		LDS		R_A2,		0AH
		LDS		R_A3,		0AH
		LDS		R_A4,		0AH
		LDS		R_A5,		0AH
		LDS		R_A6,		0AH
		
		LDA		R_BP
		SUB		R_AP
		JNC		StepDiv4_1
		STA		R_AP
		JMP		StepDiv5
StepDiv4_1:
		LDA		R_AP
		SUB		R_BP
		STA		R_AP
		LDS		TempR0,		1000B
		OR*		R_AP
StepDiv5:
		CALL	ComWB
		JNZ		StepDiv8
StepDiv6:
		LDA		R_A6
		JZ		StepDiv7
		LDS		TempR0,		0AH
		SUB		R_A6
		JNZ		StepDiv10
StepDiv7:
		CALL	LeftW
		CALL	LeftA
		LDS		Dummy,		1000B
		AND		R_AP
		JNZ		StepDiv7_1
		INC*	R_AP
		JMP		StepDiv5
StepDiv7_1:
		LDA		R_AP
		STA		Dummy
		ANDI*	Dummy,		0111B
		DEC*	Dummy
		JNZ		StepDiv7_2
		LDS		R_AP,		0
		JMP		StepDiv5
StepDiv7_2:
		ORI*	Dummy,		1000B
		STA		R_AP
		JMP		StepDiv5
StepDiv8:
		CALL	WsubB
		INC*	R_A0
StepDiv9:
		JMP		StepDiv5
StepDiv10:
		CALL	CopyAtoW
		RTS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CopyAtoW:
		LDA		R_A0
		STA		R_W0
		LDA		R_A1
		STA		R_W1
		LDA		R_A2
		STA		R_W2
		LDA		R_A3
		STA		R_W3
		LDA		R_A4
		STA		R_W4
		LDA		R_A5
		STA		R_W5
		LDA		R_A6
		STA		R_W6
		LDA		R_AP
		STA		R_WP
		LDS		R_W7,	0
		RTS
;;;;;;;;;;;;;;;;;;;;;;;;;;
CopyWtoA:
		LDA		R_W0
		STA		R_A0
		LDA		R_W1
		STA		R_A1
		LDA		R_W2
		STA		R_A2
		LDA		R_W3
		STA		R_A3
		LDA		R_W4
		STA		R_A4
		LDA		R_W5
		STA		R_A5
		LDA		R_W6
		STA		R_A6
		LDA		R_WP
		STA		R_AP
		RTS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CopyWtoB:
		LDA		R_W0
		STA		R_B0
		LDA		R_W1
		STA		R_B1
		LDA		R_W2
		STA		R_B2
		LDA		R_W3
		STA		R_B3
		LDA		R_W4
		STA		R_B4
		LDA		R_W5
		STA		R_B5
		LDA		R_W6
		STA		R_B6
		LDA		R_WP
		STA		R_BP
		RTS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LeftA:
		LDA		R_A5
		STA		R_A6
		LDA		R_A4
		STA		R_A5
		LDA		R_A3
		STA		R_A4
		LDA		R_A2
		STA		R_A3
		LDA		R_A1
		STA		R_A2
		LDA		R_A0
		STA		R_A1
		LDS		R_A0,	0
		RTS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LeftB:
		LDA		R_B5
		STA		R_B6
		LDA		R_B4
		STA		R_B5
		LDA		R_B3
		STA		R_B4
		LDA		R_B2
		STA		R_B3
		LDA		R_B1
		STA		R_B2
		LDA		R_B0
		STA		R_B1
		LDS		R_B0,	0
		RTS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LeftW:
		LDA		R_W6
		STA		R_W7
		LDA		R_W5
		STA		R_W6
		LDA		R_W4
		STA		R_W5
		LDA		R_W3
		STA		R_W4
		LDA		R_W2
		STA		R_W3
		LDA		R_W1
		STA		R_W2
		LDA		R_W0
		STA		R_W1
		LDS		R_W0,	0
		RTS
;;;;;;;;;;;;;;;;;;;
RightA:
		LDA		R_A1
		STA		R_A0
		LDA		R_A2
		STA		R_A1
		LDA		R_A3
		STA		R_A2
		LDA		R_A4
		STA		R_A3
		LDA		R_A5
		STA		R_A4
		LDA		R_A6
		STA		R_A5
		LDS		R_A6,	0
		RTS
;;;;;;;;;;;;;;;;;;;;;;
RightB:
		LDA		R_B1
		STA		R_B0
		LDA		R_B2
		STA		R_B1
		LDA		R_B3
		STA		R_B2
		LDA		R_B4
		STA		R_B3
		LDA		R_B5
		STA		R_B4
		LDA		R_B6
		STA		R_B5
		LDS		R_B6,	0
		RTS
;;;;;;;;;;;;;;;;;;;;;;;
Right_B:
		LDA		R_B1
		STA		R_B0
		LDA		R_B2
		STA		R_B1
		LDA		R_B3
		STA		R_B2
		LDA		R_B4
		STA		R_B3
		LDA		R_B5
		STA		R_B4
		LDA		R_B6
		STA		R_B5
		LDS		R_B6,	0AH
		RTS
;;;;;;;;;;;;;;;;;;;;;;;;;	
RightW:
		LDA		R_W1
		STA		R_W0
		LDA		R_W2
		STA		R_W1
		LDA		R_W3
		STA		R_W2
		LDA		R_W4
		STA		R_W3
		LDA		R_W5
		STA		R_W4
		LDA		R_W6
		STA		R_W5
		LDA		R_W7
		STA		R_W6
		LDS		R_W7,	0
		RTS
;;;;;;;;;;;;;;;;;;;;;;;;
ComWB:
		LDA		R_B0
		SUB		R_W0
		LDA		R_B1
		SBC		R_W1
		LDA		R_B2
		SBC		R_W2
		LDA		R_B3
		SBC		R_W3
		LDA		R_B4
		SBC		R_W4
		LDA		R_B5
		SBC		R_W5
		LDA		R_B6
		SBC		R_W6
		LDS		TempR0,0
		SBC		R_W7
		JNC		WlessB
WbigB:
		LDS		TempR0,1
		RTS
WlessB:
		LDS 	TempR0,0
		RTS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
WsubB:
		LDA		R_B0
		SUB*	R_W0
		DAS*	R_W0
		LDA		R_B1
		SBC*	R_W1
		DAS*	R_W1
		LDA		R_B2
		SBC*	R_W2
		DAS*	R_W2
		LDA		R_B3
		SBC*	R_W3
		DAS*	R_W3
		LDA		R_B4
		SBC*	R_W4
		DAS*	R_W4
		LDA		R_B5
		SBC*	R_W5
		DAS*	R_W5
		LDA		R_B6
		SBC*	R_W6
		DAS*	R_W6
		LDS		TempR0,0
		SBC*	R_W7
		DAS*	R_W7
		JC		$+2
		LDS		R_Error,	1
		RTS
;;;;;;;;;;;;;;;;;;;;
WaddA:
		LDA		R_A0
		ADD		R_W0
		DAA*	R_W0
		LDA		R_A1
		ADC*	R_W1
		DAA*	R_W1
		LDA		R_A2
		ADC*	R_W2
		DAA*	R_W2
		LDA		R_A3
		ADC*	R_W3
		DAA*	R_W3
		LDA		R_A4
		ADC*	R_W4
		DAA*	R_W4
		LDA		R_A5
		ADC*	R_W5
		DAA*	R_W5
		LDA		R_A6
		ADC*	R_W6
		DAA*	R_W6
		LDS		TempR0,	0
		ADC*	R_W7
		RTS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
WaddB
		LDA		R_B0
		ADD*	R_W0
		DAA*	R_W0
		LDA		R_B1
		ADC*	R_W1
		DAA*	R_W1
		LDA		R_B2
		ADC*	R_W2
		DAA*	R_W2
		LDA		R_B3
		ADC*	R_W3
		DAA*	R_W3
		LDA		R_B4
		ADC*	R_W4
		DAA*	R_W4
		LDA		R_B5
		ADC*	R_W5
		DAA*	R_W5
		LDA		R_B6
		ADC*	R_W6
		DAA*	R_W6
		LDS		TempR0,	0
		ADC*	R_W7
		RTS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;	
ClearW:
		LDS		R_W0,	0
		LDS		R_W1,	0
		LDS		R_W2,	0
		LDS		R_W3,	0
		LDS		R_W4,	0
		LDS		R_W5,	0
		LDS		R_W6,	0
		LDS		R_W7,	0
		LDS		R_WP,	0
		RTS		

			

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;		
Lb_Kg:								;1lb = 0.4536kg
		LDA		SData1
		STA		R_A0
		LDA		SData2
		STA		R_A1
		LDA		SData3
		STA		R_A2
		LDA		SData4
		STA		R_A3
		LDS		R_A4,		0
		LDS		R_A5,		0
		LDS		R_A6,		0
		LDS		R_AP,		1
		
		LDS		R_B0,		6
		LDS		R_B1,		3
		LDS		R_B2,		5
		LDS		R_B3,		4
		LDS		R_B4,		0
		LDS		R_B5,		0
		LDS		R_B6,		0
		LDS		R_BP,		4
		CALL	F_Mul
		
		LDS		TempR0,		0	 ;Round off
		LDS		TempR1,		4
		MVU		TempR0
		MVH		TempR1
		LDS		TempR0,		2
		SUB		R_WP
		STA		TempR1
		MVL		TempR1
		
		LDS		TempR0,		5
		SUB		@HL
		JNC		Lb_Kg2
Lb_Kg1:		
		INC*	TempR1
		MVL		TempR1
		INC*	@HL
		DAA*	@HL
		JC		Lb_Kg1
Lb_Kg2:
		
		LDS		TempR0,		0	 
		LDS		TempR1,		4
		MVU		TempR0
		MVH		TempR1
		LDS		TempR0,		1
		SUB		R_WP
		STA		TempR1
		MVL		TempR1
		
		LDA#	@HL
		STA		SData1
		LDA#	@HL
		STA		SData2
		LDA#	@HL
		STA		SData3
		LDA		@HL
		STA		SData4	
		RTS
;-----------------------------------------------------	
Inch_Cm:							;1inch = 2.54cm
		LDA		SData3				;1foot =12 inch
		STA		R_A0
		LDS		R_A1,		0
		LDS		R_A2,		0
		LDS		R_A3,		0
		LDS		R_A4,		0
		LDS		R_A5,		0
		LDS		R_A6,		0
		LDS		R_AP,		0
		
		LDS		R_B0,		2
		LDS		R_B1,		1
		LDS		R_B2,		0
		LDS		R_B3,		0
		LDS		R_B4,		0
		LDS		R_B5,		0
		LDS		R_B6,		0
		LDS		R_BP,		0
		CALL	F_Mul
					
		LDA		SData1
		STA		R_B0
		LDA		SData2
		STA		R_B1
		LDS		R_B2,		0
		LDS		R_B3,		0
		LDS		R_B4,		0
		LDS		R_B5,		0
		LDS		R_B6,		0
		LDS		R_BP,		0
		CALL	F_Add
		LDS		R_B0,		4
		LDS		R_B1,		5
		LDS		R_B2,		2
		LDS		R_B3,		0
		LDS		R_B4,		0
		LDS		R_B5,		0
		LDS		R_B6,		0
		LDS		R_BP,		2
		CALL	F_Mul
									 ;Round off
		LDS		TempR0,		0
		LDS		TempR1,		4
		MVU		TempR0
		MVH		TempR1
		LDS		TempR0,		2
		SUB		R_WP
		STA		TempR1
		MVL		TempR1
		
		LDS		TempR0,		5
		SUB		@HL
		JNC		Inch_Cm2
Inch_Cm1:		
		INC*	TempR1
		MVL		TempR1
		INC*	@HL
		DAA*	@HL
		JC		Inch_Cm1
Inch_Cm2:
		LDS		TempR0,		0
		LDS		TempR1,		4
		MVU		TempR0
		MVH		TempR1
		LDS		TempR0,		1
		SUB		R_WP
		STA		TempR1
		MVL		TempR1
		
		LDA#	@HL
		STA		SData1
		LDA#	@HL
		STA		SData2
		LDA#	@HL
		STA		SData3
		LDA		@HL
		STA		SData4	
		RTS		
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;		
Kg_Lb:								;1kg = 2.205lb
	    LDA		SData1
		STA		R_A0
		LDA		SData2
		STA		R_A1
		LDA		SData3
		STA		R_A2
		LDA		SData4
		STA		R_A3
		LDS		R_A4,		0
		LDS		R_A5,		0
		LDS		R_A6,		0
		LDS		R_AP,		1
		
		LDS		R_B0,		5
		LDS		R_B1,		0
		LDS		R_B2,		2
		LDS		R_B3,		2
		LDS		R_B4,		0
		LDS		R_B5,		0
		LDS		R_B6,		0
		LDS		R_BP,		3
		CALL	F_Mul
									;Round OFF
		LDS		TempR0,		0
		LDS		TempR1,		4
		MVU		TempR0
		MVH		TempR1
		LDS		TempR0,		2
		SUB		R_WP
		STA		TempR1
		MVL		TempR1
		
		LDS		TempR0,		5
		SUB		@HL
		JNC		Kg_Lb2
Kg_Lb1:		
		INC*	TempR1
		MVL		TempR1
		INC*	@HL
		DAA*	@HL
		JC		Kg_Lb1
Kg_Lb2:
		LDS		TempR0,		0
		LDS		TempR1,		4
		MVU		TempR0
		MVH		TempR1
		LDS		TempR0,		1
		SUB		R_WP
		STA		TempR1
		MVL		TempR1
		
		LDA#	@HL
		STA		SData1
		LDA#	@HL
		STA		SData2
		LDA#	@HL
		STA		SData3
		LDA		@HL
		STA		SData4	
		RTS


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Cm_Inch:							;1cm = 0.3937inch
		LDA		SData1
		STA		R_A0
		LDA		SData2
		STA		R_A1
		LDA		SData3
		STA		R_A2
		LDA		SData4
		STA		R_A3
		LDS		R_A4,		0
		LDS		R_A5,		0
		LDS		R_A6,		0
		LDS		R_AP,		1
		
		LDS		R_B0,		7
		LDS		R_B1,		3
		LDS		R_B2,		9
		LDS		R_B3,		3
		LDS		R_B4,		0
		LDS		R_B5,		0
		LDS		R_B6,		0
		LDS		R_BP,		4
		CALL	F_Mul				;inch
		LDS		R_B0,		2
		LDS		R_B1,		1
		LDS		R_B2,		0
		LDS		R_B3,		0
		LDS		R_B4,		0
		LDS		R_B5,		0
		LDS		R_B6,		0
		LDS		R_BP,		0
		CALL	F_Div				;foot
		
		LDS		TempR0,		0
		LDS		TempR1,		3
		MVU		TempR0
		MVH		TempR1
		MVL		R_AP
		LDA		@HL
		STA		SData3
		LDS		TempR0,		0
		STA		@HL
		LDS		R_B0,		2
		LDS		R_B1,		1
		LDS		R_B2,		0
		LDS		R_B3,		0
		LDS		R_B4,		0
		LDS		R_B5,		0
		LDS		R_B6,		0
		LDS		R_BP,		0		
		CALL	F_Mul				;leaved inch 
									;round off
		LDS		TempR0,		0
		LDS		TempR1,		4
		MVU		TempR0
		MVH		TempR1
		LDS		TempR0,		1
		SUB		R_WP
		STA		TempR1
		MVL		TempR1
		
		LDS		TempR0,		5
		SUB		@HL
		JNC		Cm_Inch2
		
Cm_Inch1:		
		INC*	TempR1
		MVL		TempR1
		INC*	@HL
		DAA*	@HL
		JC		Cm_Inch1
Cm_Inch2:
		
		LDS		TempR0,		0             
		LDS		TempR1,		4
		MVU		TempR0
		MVH		TempR1
		MVL		R_WP
		LDA# 	@HL
		STA		SData1
		LDA		@HL
		STA		SData2
		LDS		SData4,	0
		RTS		
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
F_BMI:
	;Height*Height
		LDA		Height1
		STA		R_A0
		STA		R_B0
		LDA		Height2
		STA		R_A1
		STA		R_B1
		LDA		Height3
		STA		R_A2
		STA		R_B2
		LDA		Height4
		STA		R_A3
		STA		R_B3
		LDS		R_A4,		0
		LDS		R_B4,		0
		LDS		R_A5,		0
		LDS		R_B5,		0
		LDS		R_A6,		0
		LDS		R_B6,		0	
		LDS		R_BP,		3
		LDS		R_AP,		3
		CALL	F_Mul
		CALL	CopyWtoB
	
		LDA		Weight1
		STA		R_A0
		LDA		Weight2
		STA		R_A1
		LDA		Weight3
		STA		R_A2
		LDA		Weight4
		STA		R_A3
		LDS		R_A4,		0
		LDS		R_A5,		0
		LDS		R_A6,		0
		LDS		R_AP,		1
		CALL	F_Div
		
		LDS		TempR0,		0			;round off
		LDS		TempR1,		4
		MVU		TempR0
		MVH		TempR1
		LDS		TempR0,		2
		SUB		R_WP
		STA		TempR1
		MVL		TempR1
		
		LDS		TempR0,		5
		SUB		@HL
		JNC		F_BMI2
F_BMI1:		
		INC*	TempR1
		MVL		TempR1
		INC*	@HL
		DAA*	@HL
		JC		F_BMI1
F_BMI2:	
		LDS		TempR0,		0             
		LDS		TempR1,		4
		MVU		TempR0
		MVH		TempR1
		LDS		TempR0,		1
		SUB		R_WP
		STA		TempR1
		MVL		TempR1
		
		LDA#	@HL
		STA		BMI1
		LDA#	@HL
		STA		BMI2
		LDA		@HL
		STA		BMI3
		RTS		
;;;;;;

⌨️ 快捷键说明

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