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

📄 trigonom.asl

📁 这是用台湾KingB 8位单片机开发的科学计算器程序
💻 ASL
📖 第 1 页 / 共 5 页
字号:
+                     1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;don't chang
+                     2 
0007                  3 Length          EQU     07h
000E                  4 Length_Z        EQU     Length+Length
0009                  5 TableLength	EQU	09
+                     6 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+                     7 
+                     8 
+                     9         .area   S_C_T(data,abs)
+                    10         .org	0x4f
+                    11 
+B 00 01
004F                 12 SignAns::               .ds     1
0050                 13 SignT::         	.ds     1
+                    14 
0051                 15 PointT::                .ds     1
0052                 16 BufferTan::   		.ds     Length+1
+                    17 
005A                 18 SignXn::                .ds     1
+                    19 
005B                 20 PointXn::               .ds     1
+                    21 
005C                 22 BufferXn::      	.ds     Length+1
+                    23 
+                    24 
+                    25         .area   Tan_code(code)
+                    26 
+                    27 ;**************************************
+B 00 02
0000                 28 Sin::
+                    29 
0000 F1 00           30         lda     SignX
0002 FD 00           31         sta     SignTemp
+                    32 ;;Added by Golden        
0004 F3 00           33         lda     #0
0006 F9 00           34         sta0    SignX  
+                    35 
0008 20 00 00        36         call    ClearBuffer
+                    37 	
000B F3 00           38 	lda	#0
000D FD 07           39 	sta	OperandX+Length
+                    40 
000F F3 5C           41         lda     #BufferXn
0011 FD 00           42         sta     Addr1
+                    43 
0013 20 00 00        44         call    ClearData
+                    45 
0016 F3 52           46         lda     #BufferTan
0018 FD 00           47         sta     Addr1
+                    48 
001A 20 00 00        49         call    ClearData
+                    50 
001D F3 00           51         lda     #0
001F FD 5B           52         sta     PointXn
0021 FD 51           53         sta     PointT
0023 FD 5A           54         sta     SignXn
0025 FD 50           55         sta     SignT
0027 FD 00           56         sta     TanTemp
+                    57 
0029 20 09 17        58         call    CheckQuadrandtal
+                    59 
002C F1 00           60         lda     Temp1
002E 8B 00           61         adda    #0
0030 06 00 47        62         brz     1$
0033 7F              63         rorc
0034 04 03 13        64         brc     Sin90
0037 7F              65         rorc
0038 04 02 D9        66         brc     Sin180
003B 7F              67         rorc
003C 04 02 F1        68         brc     Sin270
003F 7F              69         rorc
0040 04 02 D9        70         brc     Sin360
0043 7F              71         rorc
0044 04 03 51        72         brc     Sin30
+                    73 1$:                     ;;;cau seta
0047 F3 00           74         lda     #0h
0049 FD 00           75         sta     Xn
+                    76 
004B F3 00           77         lda     #^Pdata
004D FD 02           78         sta     TableC+2
+                    79 
004F F3 0B           80         lda     #@Pdata
0051 FD 01           81         sta     TableC+1
+                    82 
0053 F3 FC           83         lda     #<Pdata
0055 FD 00           84         sta     TableC
+                    85 
0057 F3 00           86         lda     #0
0059 FD 00           87         sta     Temp2
+                    88                         ;;;get pi
005B 20 08 A9        89         call    GetData
+                    90 
005E F3 00           91         lda     #0
0060 FD 00           92         sta     Temp2
+                    93                         ;;;get X
0062 20 00 00        94         call    Multiplation
+                    95                         ;;;move X to operandX
0065 F3 00           96         lda     #OperandZ
0067 FD 00           97         sta     Addr1
+                    98 
0069 F3 00           99         lda     #OperandX
006B FD 00          100         sta     Addr2
+                   101 
006D 20 00 00       102         call    CopyData
+                   103 
0070 F1 00          104         lda     PointZ
0072 FD 00          105         sta     PointX
+                   106                         ;;;save X to bufferZ
0074 F3 00          107         lda     #BufferZ
0076 FD 00          108         sta     Addr2
+                   109 
0078 20 00 00       110         call    CopyData
+                   111 
007B F1 00          112         lda     PointZ
007D FD 00          113         sta     PointBz
+                   114                         ;;;;get X^2
007F 20 0B A7       115         call    GetXX
+                   116                         ;;;;save  X^2 to bufferXn
0082 F3 00          117         lda     #OperandZ
0084 FD 00          118         sta     Addr1
+                   119 
0086 F3 5C          120         lda     #BufferXn
0088 FD 00          121         sta     Addr2
+                   122 
008A 20 00 00       123         call    CopyData
+                   124 
008D F1 00          125         lda     PointZ
008F FD 5B          126         sta     PointXn
+                   127         
0091 F3 00          128         lda	#0
0093 FD 00          129         sta	Xn
+                   130         
0095                131 SinLoop:
+                   132                                 ;;;get (X^2/17!)
+                   133                                 ;;;get 1/17!
0095 F3 00          134         lda     #^SinData
0097 FD 02          135         sta     TableC+2
+                   136 
0099 F3 0C          137         lda     #@SinData
009B FD 01          138         sta     TableC+1
+                   139 
009D F3 05          140         lda     #<SinData
009F FD 00          141         sta     TableC
+                   142 
00A1 F1 00          143         lda     Xn
00A3 FD 00          144         sta     Temp2
00A5 1F             145         inca
00A6 FD 00          146         sta     Xn
+                   147 
00A8 20 08 A9       148         call    GetData
+                   149                                 ;;;move X^2 to operandX
00AB F3 5C          150         lda     #BufferXn
00AD FD 00          151         sta     Addr1
+                   152 
00AF F3 00          153         lda     #OperandX
00B1 FD 00          154         sta     Addr2
+                   155 
00B3 20 00 00       156         call    CopyData
+                   157 
00B6 F1 5B          158         lda     PointXn
00B8 FD 00          159         sta     PointX
+                   160 0$:                             ;;;get (X^2/17!)
00BA 20 00 00       161         call    Multiplation
+                   162 
00BD F3 00          163         lda     #^SinData
00BF FD 02          164         sta     TableC+2
+                   165                                 ;;;get 1/Xn!
00C1 F3 0C          166         lda     #@SinData
00C3 FD 01          167         sta     TableC+1
+                   168 
00C5 F3 05          169         lda     #<SinData
00C7 FD 00          170         sta     TableC
+                   171 
00C9 F1 00          172         lda     Xn
00CB FD 00          173         sta     Temp2
00CD 1F             174         inca
00CE FD 00          175         sta     Xn
00D0 A7 08          176         cmpe    #08h
00D2 04 01 1A       177         brc     3$
+                   178 
00D5 20 08 A9       179         call    GetData
+                   180                                 ;;;move to operandX
00D8 F3 00          181         lda     #OperandY
00DA FD 00          182         sta     Addr1
+                   183 
00DC F3 00          184         lda     #OperandX
00DE FD 00          185         sta     Addr2
+                   186 
00E0 20 00 00       187         call    CopyData
+                   188 
00E3 F1 00          189         lda     PointY
00E5 FD 00          190         sta     PointX
+                   191 
00E7 F3 00          192         lda     #OperandZ
00E9 FD 00          193         sta     Addr1
+                   194 
00EB F3 00          195         lda     #OperandY
00ED FD 00          196         sta     Addr2
+                   197 
00EF 20 00 00       198         call    CopyData
+                   199 
00F2 F1 00          200         lda     PointZ
00F4 FD 00          201         sta     PointY
+                   202 
00F6 20 00 00       203         call    Subtration
+                   204 2$:
+                   205                                 ;;;move ans to operandX
00F9 F3 00          206         lda     #OperandZ
00FB FD 00          207         sta     Addr1
+                   208 
00FD F3 00          209         lda     #OperandX
00FF FD 00          210         sta     Addr2
+                   211 
0101 20 00 00       212         call    CopyData
+                   213 
0104 F1 00          214         lda     PointZ
0106 FD 00          215         sta     PointX
+                   216                                 ;;;move X^2 to operandY
0108 F3 5C          217         lda     #BufferXn
010A FD 00          218         sta     Addr1
+                   219 
010C F3 00          220         lda     #OperandY
010E FD 00          221         sta     Addr2
+                   222 
0110 20 00 00       223         call    CopyData
+                   224 
0113 F1 5B          225         lda     PointXn
0115 FD 00          226         sta     PointY
+                   227 
0117 02 00 BA       228         br      0$
+                   229 
+                   230 3$:
+                   231                                 ;;;move OperandZ to OperandY
011A F3 00          232         lda     #OperandZ
011C FD 00          233         sta     Addr1
+                   234 
011E F3 00          235         lda     #OperandY
0120 FD 00          236         sta     Addr2
+                   237 
0122 20 00 00       238         call    CopyData
+                   239 
0125 F1 00          240         lda     PointZ
0127 FD 00          241         sta     PointY
+                   242                                 ;;;move X to OperandX
0129 F3 00          243         lda     #BufferZ
012B FD 00          244         sta     Addr1
+                   245 
012D F3 00          246         lda     #OperandX
012F FD 00          247         sta     Addr2
+                   248 
0131 20 00 00       249         call    CopyData
+                   250 
0134 F1 00          251         lda     PointBz
0136 FD 00          252         sta     PointX
+                   253 
0138 20 00 00       254         call    Multiplation
+                   255 
013B F3 00          256         lda     #OperandZ
013D FD 00          257         sta     Addr1
+                   258 
013F F3 00          259         lda     #OperandY
0141 FD 00          260         sta     Addr2
+                   261 
0143 20 00 00       262         call    CopyData
+                   263 
0146 F1 00          264         lda     PointZ
0148 FD 00          265         sta     PointY
+                   266 
014A F3 00          267         lda     #BufferZ
014C FD 00          268         sta     Addr1
+                   269 
014E F3 00          270         lda     #OperandX
0150 FD 00          271         sta     Addr2
+                   272 
0152 20 00 00       273         call    CopyData
+                   274 
0155 F1 00          275         lda     PointBz
0157 FD 00          276         sta     PointX
+                   277 
0159 20 00 00       278         call    Subtration
+                   279 
015C                280 EndSin:
+                   281 
015C F1 4F          282         lda     SignAns
015E A7 03          283         cmpe    #03h
0160 04 01 68       284         brc     1$
+                   285 
0163 F1 00          286         lda     SignTemp
0165 FD 00          287         sta     SignZ
+                   288 
0167 24             289         ret
+                   290 1$:
0168 F3 01          291         lda     #01h
016A E9 00          292         xora    SignTemp
016C FD 00          293         sta     SignZ
016E 24             294         ret
+                   295 
+                   296 
+                   297 ;*************************************
+                   298 ;
+                   299 ;*************************************

⌨️ 快捷键说明

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