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

📄 hyperbolic.asl

📁 这是用台湾KingB 8位单片机开发的科学计算器程序
💻 ASL
📖 第 1 页 / 共 2 页
字号:
+                     1 ;/subrutine name : Hyperbolic.asm
+                     2 ;/user bady      : 
+                     3 ;/fast clock     :  
+                     4 ;/slow clock     :  
+                     5 ;/programer      : Alton
+                     6 ;
+                     7 ;
+                     8 
+                     9 
+                    10 
+                    11        			.area   Hyperbolic_data(data,rel)
+                    12        			
0008                 13 .InpLength		EQU		0x08       			     
+                    14  			
+                    15        			.area   Hyperbolic_code(code,rel)
+B 00 01
0000                 16 .SinH::						;;1/2(e^x-e^-x)	SinH(-x)=-SinH(x)
+                    17 		
0000 F5 00           18 		lda0	SignX
0002 F9 00           19 		sta0	.Buf1			;STORE SignX
0004 F3 00           20 		lda	#0h
0006 F9 00           21 		sta0	SignX
0008 20 00 00        22 		call	.X_trans_Buf	
000B 20 02 EC        23 		call	.CkXsize
000E F5 00           24 		lda0	ErrorFlag
0010 A7 00           25 		cmpe	#0h
0012 07 00 96        26 		brnz	.EndSinH
0015 20 00 00        27 		call	.Buf_trans_X
0018 20 00 00        28 		call	.X_trans_B
001B 20 00 00        29 		call	.ClrY
001E F3 01           30 		lda	#01h
0020 F9 06           31 		sta0	OperandY+6
0022 F3 05           32 		lda	#05h
0024 F9 00           33 		sta0	PointY
0026 20 00 00        34 		call	Subtration
0029 F5 00           35 		lda0	SignZ
002B A7 01           36 		cmpe	#01h
002D 06 00 93        37 		brz	.GetBufToZ
0030 20 00 00        38 		call	.Buf_trans_X		
0033 20 00 00        39 		call	.ClrY
0036 F3 33           40 		lda	#33h
0038 FD 06           41 		sta	OperandY+.InpLength-2
003A F3 00           42 		lda	#0h
003C FD 00           43 		sta	SignX
003E FD 00           44 		sta	SignY
0040 FD 00           45 		sta	PointY		
0042 20 00 00        46 		call    Subtration
0045 F1 00           47 		lda	SignZ
0047 A7 01           48 		cmpe	#01h
0049 06 00 58        49 		brz	.SinCondition1
004C 20 00 00        50 		call	.Buf_trans_X
004F 20 00 00        51 		call	Ex
0052 20 00 00        52 		call	.Z_trans_X
0055 02 00 76        53 		br	.SinCondition2		
0058                 54 .SinCondition1:					;x<33
0058 F1 00           55 		lda	.Buf_trans_X
005A F3 00           56 		lda	#0h
005C FD 00           57 		sta	SignX
005E 20 00 00        58 		call	Ex
0061 20 00 00        59 		call	.Z_trans_Buf
0064 20 00 00        60 		call	.Put_1_to_OperandX			   
0067 20 00 00        61 		call	.Buf_trans_Y
006A 20 00 00        62 		call    Division
006D 20 00 00        63 		call	.Buf_trans_X
0070 20 00 00        64 		call	.Z_trans_Y
0073 20 00 00        65 		call    Subtration
0076                 66 .SinCondition2:					;x>33
0076 20 00 00        67 		call	.ClrY
0079 F3 02           68 		lda	#02h		
007B FD 06           69 		sta	OperandY+.InpLength-2
007D F3 00           70 		lda	#0h
007F FD 00           71 		sta	SignY
0081 FD 00           72 		sta	PointY	
0083 20 00 00        73 		call	.Z_trans_X
0086 20 00 00        74 		call    Division
0089 20 00 00        75 		call	.B_trans_X		
008C F5 00           76 		lda0	.Buf1			;STORE SignX
008E FD 00           77 		sta	SignZ
0090 02 00 96        78 		br	.EndSinH
0093                 79 .GetBufToZ:
0093 20 00 00        80 		call	.Buf_trans_Z		
0096                 81 .EndSinH:		
0096 24              82 		ret  			
+                    83 ;===========================================		
0097                 84 .CosH::						;1/2(e^x+e^-x)	CosH(x)=CosH(-x)
0097 F3 00           85 		lda	#0h			;;228
0099 F9 00           86 		sta0	SignX			;228
009B 20 00 00        87 		call	.X_trans_Buf
009E 20 02 EC        88 		call	.CkXsize
00A1 F5 00           89 		lda0	ErrorFlag
00A3 A7 00           90 		cmpe	#0h
00A5 07 01 09        91 		brnz	.EndCosh
00A8 20 00 00        92 		call	.Buf_trans_X		
00AB 20 00 00        93 		call	.ClrY
00AE F3 33           94 		lda	#33h
00B0 FD 06           95 		sta	OperandY+.InpLength-2
00B2 F3 00           96 		lda	#0h
00B4 FD 00           97 		sta	SignX
00B6 FD 00           98 		sta	SignY
00B8 FD 00           99 		sta	PointY		
00BA 20 00 00       100 		call    Subtration
00BD F1 00          101 		lda	SignZ
00BF A7 01          102 		cmpe	#01h
00C1 06 00 D4       103 		brz	.CosCondition1
00C4 20 00 00       104 		call	.Buf_trans_X	
00C7 F3 00          105 		lda	#0h
00C9 FD 00          106 		sta	SignX
00CB 20 00 00       107 		call	Ex
00CE 20 00 00       108 		call	.Z_trans_X
00D1 02 00 F2       109 		br	.CosCondition2		
00D4                110 .CosCondition1:					;x<33
00D4 F1 00          111 		lda	.Buf_trans_X
00D6 F3 00          112 		lda	#0h
00D8 FD 00          113 		sta	SignX
00DA 20 00 00       114 		call	Ex
00DD 20 00 00       115 		call	.Z_trans_Buf
00E0 20 00 00       116 		call	.Put_1_to_OperandX			   
00E3 20 00 00       117 		call	.Buf_trans_Y
00E6 20 00 00       118 		call    Division
00E9 20 00 00       119 		call	.Buf_trans_X
00EC 20 00 00       120 		call	.Z_trans_Y
00EF 20 00 00       121 		call    Addition
00F2                122 .CosCondition2:					;x>33
00F2 20 00 00       123 		call	.ClrY
00F5 F3 02          124 		lda	#02h		
00F7 FD 06          125 		sta	OperandY+.InpLength-2
00F9 F3 00          126 		lda	#0h
00FB FD 00          127 		sta	SignY
00FD FD 00          128 		sta	PointY	
00FF 20 00 00       129 		call	.Z_trans_X
0102 20 00 00       130 		call    Division
0105 F3 00          131 		lda	#0h
0107 FD 00          132 		sta	SignZ
0109                133 .EndCosh:		
0109 24             134 		ret  
+                   135 ;===========================================
010A                136 .TanH::		
+                   137 ;--------check limit big				;1-2/((e ^2x)+1)
010A 20 00 00       138 		call	.X_trans_Buf
010D F3 00          139 		lda	#0h
010F F9 00          140 		sta0	SignX
0111 20 00 00       141 		call	.ClrY
0114 F3 01          142 		lda	#01h			;IF X>=12.2 ANS Z=1
0116 F9 05          143 		sta0	OperandY+5
0118 F3 22          144 		lda	#22h
011A F9 06          145 		sta0	OperandY+6
011C F3 01          146 		lda	#01h
011E F9 00          147 		sta0	PointY
0120 20 00 00       148 		call	Subtration
0123 F5 00          149 		lda0	SignZ
0125 A7 00          150 		cmpe	#0h
0127 06 01 AC       151 		brz	.Ans1
+                   152 ;--------check limit small			;if x<1^-5 Ans =X
012A 20 00 00       153 		call	.Buf_trans_X
012D F3 00          154 		lda	#0h
012F F9 00          155 		sta0	SignX
0131 20 00 00       156 		call	.ClrY
0134 F3 01          157 		lda	#01h
0136 F9 06          158 		sta0	OperandY+6
0138 F3 05          159 		lda	#05h
013A F9 00          160 		sta0	PointY
013C 20 00 00       161 		call	Subtration
013F F5 00          162 		lda0	SignZ
0141 A7 01          163 		cmpe	#01h
0143 06 00 93       164 		brz	.GetBufToZ 
+                   165 
+                   166 ;-------------				
0146 20 00 00       167 		call	.Buf_trans_X
0149 F5 00          168 		lda0	SignX
014B A7 01          169 		cmpe	#01h
014D 07 01 6B       170 		brnz	.DoTanh
0150 20 00 00       171 		call	.ClrY	
0153 F3 01          172 		lda	#01h
0155 F9 00          173 		sta0	PointY
0157 F9 05          174 		sta0	OperandY+5	 
0159 F3 22          175 		lda	#22h
015B F9 06          176 		sta0	OperandY+6
015D F3 00          177 		lda	#0h
015F F9 00          178 		sta0	SignX
0161 20 00 00       179 		call	Subtration
0164 F5 00          180 		lda0	SignZ
0166 A7 00          181 		cmpe	#0h
0168 06 01 BF       182 		brz	.Ans_1
016B                183 .DoTanh:		
016B 20 00 00       184 		call	.Buf_trans_X
016E 20 00 00       185 		call	.ClrY
0171 F3 02          186 		lda	#02h		
0173 FD 06          187 		sta	OperandY+.InpLength-2
0175 F3 00          188 		lda	#0h
0177 FD 00          189 		sta	SignY
0179 FD 00          190 		sta	PointY
017B 20 00 00       191 		call    Multiplation
017E 20 00 00       192 		call	.Z_trans_X
0181 20 00 00       193 		call	Ex							       			
0184 20 00 00       194 		call	.Z_trans_Y
0187 20 00 00       195 		call	.Put_1_to_OperandX
018A 20 00 00       196 		call    Addition
018D 20 00 00       197 		call	.ClrX
0190 F3 02          198 		lda	#02h		
0192 FD 06          199 		sta	OperandX+.InpLength-2
0194 F3 00          200 		lda	#0h
0196 FD 00          201 		sta	SignX
0198 FD 00          202 		sta	PointX
019A 20 00 00       203 		call	.Z_trans_Y
019D 20 00 00       204 		call    Division
01A0 20 00 00       205 		call	.Put_1_to_OperandX
01A3 20 00 00       206 		call	.Z_trans_Y
01A6 20 00 00       207 		call    Subtration
01A9 02 01 CC       208 		br	.EndTanH
01AC                209 .Ans1:
01AC 20 00 00       210 		call	.Buf_trans_X
01AF F5 00          211 		lda0	SignX
01B1 A7 00          212 		cmpe	#0h
01B3 07 01 BF       213 		brnz	.Ans_1	
01B6 20 00 00       214 		call	.Put_1_to_OperandX
01B9 20 00 00       215 		call	.X_trans_Z
01BC 02 01 CC       216 		br	.EndTanH
01BF                217 .Ans_1:
01BF 20 00 00       218 		call	.Put_1_to_OperandX
01C2 20 00 00       219 		call	.X_trans_Z
01C5 F3 01          220 		lda	#01h
01C7 F9 00          221 		sta0	SignZ
01C9 02 01 CC       222 		br	.EndTanH		
01CC                223 .EndTanH:
+                   224 		
01CC 24             225 		ret
+                   226 		
+                   227 ;===========================================
01CD                228 .AsinH::				;ln(x+sqrt(x^2+1)) x belong R	

⌨️ 快捷键说明

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