📄 hyperbolic.asl
字号:
+ 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 + -