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

📄 oppotriangle_0225.asm

📁 这是用台湾KingB 8位单片机开发的科学计算器程序
💻 ASM
📖 第 1 页 / 共 3 页
字号:
.Condition1:					;x<=0.5
		
		call	.DoT1									
		call	.DoP1
		call	.Z_trans_S		
		call	.DoQ1
		call	.DoW1
		call	.Result1
		ret		
;------------------------------------------------------		
.Condition2:					;x>0.5 =<1
						
		call	.DoW2
		call	.DoT2
		call	.DoP1		
		call	.DoQ1
		call	.DoW1		
		call	.ClrX 
		call	.Put_1_to_OperandX
		call	.Z_trans_Y
		call	Addition
		call	.Z_trans_B	
		call	.DoS		
		call	.Result2
		ret
;------------------------------------------------------
.Result1:
		call	.ClrX 
		call	.Put_1_to_OperandX
		call	.Z_trans_Y			
		call	Addition	
		call	.Buf_trans_X		
		call	.Z_trans_Y
		call	Multiplation
		ret			
;------------------------------------------------------
.Result2:
		
		call	.Z_trans_Y
		call	.B_trans_X		
		call	Multiplation
		call	.ClrX 		
		lda	#Int2
		sta	.M_Data_Offset
		call	.InpData
		call	.Z_trans_Y		
		call	Multiplation
		lda	#H_PI
		sta	.M_Data_Offset
		call	.InpData
		call	.Z_trans_Y
		call	Subtration
		ret
		
		
				
;------------------------------------------------------	

.AsinPs:
		call	.DoZMulPs5
		call	.DoPs4AddZ
		call	.DoXMulZ
		call	.DoPs3AddZ
		call	.DoXMulZ
		call	.DoPs2AddZ
		call	.DoXMulZ
		call	.DoPs1AddZ
		call	.DoXMulZ
		call	.DoPs0AddZ
		call	.DoXMulZ
		ret
;------------------------------------------------------		
.AsinQs:		
		call	.DoZMulQs4
		call	.DoQs3AddZ
		call	.DoXMulZ
		call	.DoQs2AddZ
		call	.DoXMulZ
		call	.DoQs1AddZ
		call	.DoXMulZ		
		ret		
;------------------------------------------------------
.DoW1:
		call	.Z_trans_Y
		call	.S_trans_X
		call	Division
		ret
;------------------------------------------------------				
.DoP1:		
		
		call	.AsinPs
		call	.Z_trans_S		
		ret						
;------------------------------------------------------				
.DoQ1:		
		
		call	.AsinQs		
		call	.ClrX 
		call	.Put_1_to_OperandX
		call	.Z_trans_Y		
		call	Addition		
		ret	
;-------------------------------------------------------     		
.DoInpX::
		lda	#X
		sta	.M_Data_Offset		
		call	.InpData					
		ret				
;-------------------------------------------------------     		
.DoT1:				
		call	.X_trans_Buf				
		call	.X_Squ
		call	Multiplation
		call	.Z_trans_B							
		ret
;-------------------------------------------------------
.DoZMulPs5:
		lda	#pS5
		sta	.M_Data_Offset		
		call	.InpData
		call	.B_trans_Y			
		call	Multiplation 			
		ret

;-------------------------------------------------------
.DoPs4AddZ:	
		lda	#pS4
		sta	.M_Data_Offset		
		call	.InpData			
		call	.Z_trans_Y
		call	Addition			
		ret	
;-------------------------------------------------------
.DoPs3AddZ:	
		lda	#pS3
		sta	.M_Data_Offset		
		call	.InpData			
		call	.Z_trans_Y
		call	Addition			
		ret
;-------------------------------------------------------
.DoPs2AddZ:	
		lda	#pS2
		sta	.M_Data_Offset		
		call	.InpData			
		call	.Z_trans_Y
		call	Addition			
		ret	
;-------------------------------------------------------
.DoPs1AddZ:	
		lda	#pS1
		sta	.M_Data_Offset		
		call	.InpData			
		call	.Z_trans_Y
		call	Addition			
		ret			
;-------------------------------------------------------
.DoPs0AddZ:	
		lda	#pS0
		sta	.M_Data_Offset		
		call	.InpData			
		call	.Z_trans_Y
		call	Addition			
		ret									
;-------------------------------------------------------
.DoXMulZ:		
		call	.B_trans_Y		
		call	.Z_trans_X
		call	Multiplation 			
		ret			
;-----------------------------------------------------
.InpData::
		;lda	OP1
		;anda	#~10h
		;sta	OP1
		call	.ClrX 
		lda	#0h
		sta	TPP
		lda	#@(SinCos)
		sta	TableC+1	
		lda	#<(SinCos)						
		adda	.M_Data_Offset
		sta	TableC		
		brnc	.Tpl_No_Carry
		lda	TableC+1	
		inca
		sta	TableC+1						
.Tpl_No_Carry:													
		
		lda	#0h
		sta	TPP
		lda	TableC+1	
		sta	TPH
		lda	TableC
		sta	TPL		
		ldv
		sta	SignX
		ldv
		sta	PointX
		lda	#OperandX
		sta	DP	 	
.Inp:					
		ldv		
		cmpe	#0ffh
		brz	.End_Inp
		sta	i		
		incdp		
		br	.Inp
		
.End_Inp:
		;lda	OP1
		;ora	#10h
		;sta	OP1	
		ret
;------------------------------------------------		
.InpDataToY::	
		;lda	OP1
		;anda	#~10h
		;sta	OP1	
		call	.ClrY 
		lda	#0h
		sta	TPP
		lda	#@(SinCos)
		sta	TableC+1		
		lda	#<(SinCos)						
		adda	.M_Data_Offset
		sta	TableC 			
		brnc	.TplNoCarry
		lda	TableC+1	
		inca
		sta	TableC+1	

.TplNoCarry:													
		
		lda	#0h
		sta	TPP
		lda	TableC+1	
		sta	TPH
		lda	TableC 
		sta	TPL		
		ldv
		sta	SignY
		ldv
		sta	PointY
		lda	#OperandY
		sta	DP	 	
.InpY:					
		ldv		
		cmpe	#0ffh
		brz	.End_InpY
		sta	i		
		incdp		
		br	.InpY
		
.End_InpY:
		;lda	OP1 
		;ora	#10h
		;sta	OP1
		ret
;-------------------------------------------------				
.InpDataToT::
		;lda	OP1
		;anda	#~10h
		;sta	OP1
		call	.ClrY
		lda	#0h
		sta	TPP
		lda	#@(Atan)
		sta	TableC+1		 	
		lda	#<(Atan)						
		adda	.M_Data_Offset
		sta	TableC 			
		brnc	.TplNoCarryTan
		lda	TableC+1	
		inca
		sta	TableC+1		

.TplNoCarryTan:													
		
		lda	#0h
		sta	TPP
		lda	TableC+1	
		sta	TPH
		lda	TableC 
		sta	TPL		
		ldv
		sta	SignY
		ldv
		sta	PointY
		lda	#OperandY
		sta	DP	 	
.InpYTan:					
		ldv		
		cmpe	#0ffh
		brz	.End_InpYTan
		sta	i		
		incdp		
		br	.InpYTan
		
.End_InpYTan:
		;lda	OP1
		;ora	#10h
		;sta	OP1
		ret				
;------------------------------------------------------
.DoW2:					
		call	.X_trans_Buf		
		call	.Buf_trans_Y		
		call	.ClrX  
		call	.Put_1_to_OperandX
		call	Subtration		
		ret
;------------------------------------------------------					
.DoT2:
		call	.Z_trans_Y
		lda	#Point5
		sta	.M_Data_Offset		
		call	.InpData		
		call	Multiplation 
		call	.Z_trans_B
		ret	
;------------------------------------------------------
.DoS:
		call	.ClrX  
		call	.Put_1_to_OperandX
		call	.Buf_trans_Y
		call	Subtration
		call	.Z_trans_X
		call	Squ
		lda	#c_hsqrt2
		sta	.M_Data_Offset	
		call	.InpData
		call	.Z_trans_Y
		call	Multiplation
		ret	
;-------------------------------------------------------
.DoZMulQs4:
		lda	#qS4
		sta	.M_Data_Offset		
		call	.InpData
		call	.B_trans_Y
		call	Multiplation 			
		ret
;-------------------------------------------------------		
.DoQs3AddZ:	
		lda	#qS3
		sta	.M_Data_Offset		
		call	.InpData			
		call	.Z_trans_Y
		call	Addition			
		ret
;-------------------------------------------------------
.DoQs2AddZ:	
		lda	#qS2
		sta	.M_Data_Offset		
		call	.InpData			
		call	.Z_trans_Y
		call	Addition			
		ret	
;-------------------------------------------------------
.DoQs1AddZ:	
		lda	#qS1
		sta	.M_Data_Offset		
		call	.InpData			
		call	.Z_trans_Y
		call	Addition			
		ret			
		
;------------------------------------------------------
;Atan
;------------------------------------------------------
.ChoiceX:	
		call	.Buf_trans_X		;2002   7/12	
		lda	#Num1
		sta	.M_Data_Offset		
		call	.InpDataToT	
		call	LineUp
		lda	#OperandX
		sta	Addr1
		lda	#OperandY
		sta	Addr2		
		lda	#.CmpLen		;2002.02.21  06
		sta	DpCount
		call	CompareData
		call	.Buf_trans_X		;2002   7/12	
		lda	Temp1			
		cmpe	#02h
		brz	.Id4
				
		lda	#Num2			;x<1.1875
		sta	.M_Data_Offset		
		call	.InpDataToT
		call	LineUp	
		lda	#OperandX
		sta	Addr1
		lda	#OperandY
		sta	Addr2		
		lda	#.CmpLen		;06 2002.02.21
		sta	DpCount
		call	CompareData
		call	.Buf_trans_X		;2002   7/12	
		lda	Temp1			
		cmpe	#02h
		brz	.Compare06875	
		
		lda	#Num4			;x<2.4375	
		sta	.M_Data_Offset		
		call	.InpDataToT
		call	LineUp
		lda	#OperandX
		sta	Addr1
		lda	#OperandY
		sta	Addr2		
		lda	#.CmpLen		;2002.02.21
		sta	DpCount
		call	CompareData
		call	.Buf_trans_X		;2002   7/12
		lda	Temp1			
		cmpe	#02h
		brz	.Id2
		br	.Id3		
.Compare06875:
		
		lda	#Num3
		sta	.M_Data_Offset		
		call	.InpDataToT
		call	LineUp	
		lda	#OperandX
		sta	Addr1
		lda	#OperandY
		sta	Addr2		
		lda	#.CmpLen		;06 2002.02.21
		sta	DpCount
		call	CompareData
		call	.Buf_trans_X		;2002   7/12
		lda	Temp1			
		cmpe	#02h
		brz	.Id0
		br	.Id1
.Id0:						;((2*x)-1)/(2+x)
		;call	.Buf_trans_X
		lda	#Int2T
		sta	.M_Data_Offset		
		call	.InpDataToT			
		call	Multiplation
		lda	#Int1T
		sta	.M_Data_Offset		
		call	.InpDataToT		
		call	.Z_trans_X
		call	Subtration
		call	.Z_trans_B
		call	.Buf_trans_X
		lda	#Int2T
		sta	.M_Data_Offset		
		call	.InpDataToT			
		call	Addition
		call	.B_trans_X
		call	.Z_trans_Y
		call	Division
		call	.Z_trans_Buf
		lda	#00h
		sta	.IdFlag
		br	.EndChoiceX
.Id1:
		lda	#Int1T
		sta	.M_Data_Offset		
		call	.InpDataToT		
		call	.Buf_trans_X
		call	Subtration
		call	.Z_trans_B
		call	.Buf_trans_X
		lda	#Int1T
		sta	.M_Data_Offset		
		call	.InpDataToT			
		call	Addition
		call	.B_trans_X
		call	.Z_trans_Y
		call	Division
		call	.Z_trans_Buf
		lda	#01h
		sta	.IdFlag
		br	.EndChoiceX
.Id2:
		lda	#Int1p5
		sta	.M_Data_Offset		
		call	.InpDataToT		
		call	.Buf_trans_X
		call	Subtration
		call	.Z_trans_B
		lda	#Int1p5
		sta	.M_Data_Offset		
		call	.InpDataToT		
		call	.Buf_trans_X
		call	Multiplation
		lda	#Int1T
		sta	.M_Data_Offset		
		call	.InpDataToT	
		call	.Z_trans_X		
		call	Addition
		call	.B_trans_X
		call	.Z_trans_Y
		call	Division
		call	.Z_trans_Buf
		lda	#02h
		sta	.IdFlag
		br	.EndChoiceX
.Id3:
		lda	#Int1
		sta	.M_Data_Offset		
		call	.InpData		
		call	.Buf_trans_Y	
		call	Division
		lda	#01h
		sta	SignZ

⌨️ 快捷键说明

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