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

📄 calctools.asl

📁 这是用台湾KingB 8位单片机开发的科学计算器程序
💻 ASL
📖 第 1 页 / 共 5 页
字号:
+                     1 
+                     2 ;/subrutine name : calc.asm
+                     3 ;/user bady      : HE84770
+                     4 ;/fast clock     : 4Mhz
+                     5 ;/slow clock     : 32768khz
+                     6 ;/programer      : Alton
+                     7 		        
+                     8 
+                     9 			  			      
+                    10 ;-------------------------------------------
+                    11        			.area   calc_data(data,ABS) 
+                    12        			.org	0xd6
0007                 13 Length   		EQU	0x07
+B 00 01
00D6                 14 .PointFlag::
00D6                 15 .Hbuf::
00D6                 16 .M_exp_Y::		.ds	1
00D7                 17 .Lbuf::
00D7                 18 .RandCnt::		.ds	1
+                    19 			.area   calc_data1(data,abs) 
+                    20        			.org	0x64
+B 00 02
0064                 21 .DmsCount::	 
+                    22 ;.KeyBuf1::
0064                 23 .PFlag::		.ds	1
0065                 24 .PYPP::
0065                 25 .PSDP::			.ds	1	
0066                 26 .INDP::			.ds	1
0067                 27 .CommaFlag::
0067                 28 .IFlag::		.ds	1
0068                 29 .STDP::			.ds	1
0069                 30 .FractDP::
0069                 31 .Buf1::			.ds	1
006A                 32 .InputDP::
006A                 33 .Buf2::       		.ds	1	
006B                 34 .LRcnt::		
006B                 35 .Buf3::
006B                 36 .SymFlag::		.ds	1
006C                 37 .SFDP::			.ds	1
006D                 38 .Buf4::
+                    39 
006D                 40 .Cnter::
006D                 41 .DecFlag::		.ds	1
+                    42 
006E                 43 .ErrorCnt::
006E                 44 .FractTrsCnt::
006E                 45 .ReleaseCnt::
006E                 46 .TFlag::		.ds	1
006F                 47 .Cnter2::
006F                 48 .PXPP::
006F                 49 .BeforePari::		.ds	1
0070                 50 .RCFlag::
+                    51 ;.KeyBuf::
0070                 52 .AfterPari::		.ds	1
+                    53 	
0071                 54 .Temp::			.ds	1
0072                 55 .CntIndex::		.ds	1
0073                 56 .FormulaFlag::
0073                 57 .PosFlag::		.ds	1
0074                 58 .KeyPos::		.ds	1
0075                 59 .DataBuf::		.ds	2			 
0077                 60 .FractCount::
0077                 61 .DispFlag::
0077                 62 .ZeroFlag::
0077                 63 .PXDP::			.ds	1
+                    64 
+                    65 
0078                 66 .PYDP::			.ds	1
+                    67 
0079                 68 .Counter::		.ds	1
007A                 69 .SimeFlag::
007A                 70 .Data::			.ds	1
+                    71 		.area   calc_data3(data,abs)
+                    72 		.org	0x13a
0008                 73 .CntByte		EQU	0x08		;07
+B 00 03
013A                 74 Sign_buf::		.ds	1
013B                 75 Point_buf::		.ds	1		
013C                 76 Operand_buf::		.ds	.CntByte
0144                 77 Sign_b::		.ds	1	
0145                 78 Point_b::		.ds	1
0146                 79 Operand_b::		.ds	.CntByte
014E                 80 Sign_s::		.ds	1
014F                 81 Point_s::		.ds	1
0150                 82 Operand_s::		.ds	.CntByte
0158                 83 Sign_r::		.ds	1
0159                 84 Point_r::		.ds	1
015A                 85 Operand_r::		.ds	.CntByte
+                    86 
0162                 87 Sign_i::		.ds	1
0163                 88 Point_i::		.ds	1
0164                 89 Operand_i::		.ds	.CntByte		
+                    90 		        .area   calc(code)            			             
+                    91 ;--------------(.percent_add)----------------------                    
+B 00 04
0000                 92 .Percent_Add::
+                    93                         
0000 20 09 28        94                         call    .Y_trans_Buf                       
0003 20 00 00        95                         call    Addition
0006 20 00 00        96                         call    CheckOutData                                    
0009 20 09 F0        97                         call    .Z_trans_X
000C 20 0A A4        98                         call    .Buf_trans_Y
000F 20 00 00        99                         call    Division
0012 20 00 00       100                         call    CheckOutData
0015 20 09 F0       101                         call    .Z_trans_X      
0018 20 05 F7       102                         call    .Put_100_to_OperandY
001B 20 00 00       103                         call    Multiplation    
001E 24             104                         ret
+                   105 ;-------------------(.percent_dec       )-------------                          
001F                106 .Percent_Dec::                  
001F 20 09 28       107                         call    .Y_trans_Buf
0022 20 00 00       108                         call    Subtration
0025 20 00 00       109                         call    CheckOutData                                     
0028 20 09 F0       110                         call    .Z_trans_X
002B 20 0A A4       111                         call    .Buf_trans_Y
002E 20 00 00       112                         call    Division
0031 20 00 00       113                         call    CheckOutData
0034 20 09 F0       114                         call    .Z_trans_X      
0037 20 05 F7       115                         call    .Put_100_to_OperandY
003A 20 00 00       116                         call    Multiplation    
003D 24             117                         ret
+                   118 ;-------------------(.percent_mul       )-------------                   
003E                119 .Percent_Mul::
+                   120   
003E 20 00 00       121                         call    Multiplation
0041 20 00 00       122                         call    CheckOutData
0044 20 09 F0       123                         call    .Z_trans_X 
0047 20 05 F7       124                         call    .Put_100_to_OperandY
004A 20 00 00       125                         call    Division
004D 24             126                         ret
+                   127                          
+                   128 ;-------------------(   .percent_div    )-------------
004E                129 .Percent_Div::
+                   130                          
+                   131                          
004E 20 00 00       132                         call    Division
0051 20 00 00       133                         call    CheckOutData
0054 20 09 F0       134                         call    .Z_trans_X 
0057 20 05 F7       135                         call    .Put_100_to_OperandY
005A 20 00 00       136                         call    Multiplation
+                   137                         
005D 24             138                         ret
+                   139                         
+                   140 ;-----------------------(	ReciX 1/X      )----------------------
005E                141 .ReciX::
005E 20 06 0F       142 			call	.X_Squ	
0061 20 05 D3       143  			call	.ClrX
0064 20 06 07       144  			call	.Put_1_to_OperandX 				
0067 20 00 00       145 			call	Division
006A 24             146 			ret
+                   147 ;-----------------------(	Log	    )----------------------
006B                148 .Log::
006B 20 00 00       149 			call	Ln 
006E 20 0A 18       150  			call	.Z_trans_Buf
0071 20 05 EB       151  			call	.ClrZ
0074 20 05 DF       152  			call	.ClrY
0077 20 05 D3       153  			call	.ClrX
007A 20 05 FF       154  			call	.Put_10_to_OperandX 
007D 20 00 00       155  			call	Ln
0080 20 0A 04       156  			call	.Z_trans_Y	
0083 20 0A 90       157  			call	.Buf_trans_X 			
0086 20 00 00       158  			call	Division	
0089 24             159  			ret
+                   160 
+                   161 ;-----------------------(        X ^2       )-----------------------
008A                162 .XSqu::
008A 20 06 0F       163 		        call	.X_Squ
008D 20 00 00       164 		        call	Multiplation
0090 24             165 		        ret
+                   166 ;-----------------------(        X ^3       )-----------------------
0091                167 .XCube::
0091 20 08 4C       168 			call	.X_trans_Buf
0094 20 06 0F       169 		        call	.X_Squ
0097 20 00 00       170 		        call	Multiplation
009A 20 0A 90       171 		        call	.Buf_trans_X
009D 20 0A 04       172 		        call	.Z_trans_Y
00A0 20 00 00       173 		        call	Multiplation
00A3 24             174 		        ret
+                   175 
+                   176 ;-------------------------------------------
00A4                177 .Factorial::		
00A4 F5 00          178 			lda0	ErrorFlag		;N!
00A6 07 01 5F       179 			brnz	.EndFactorial
00A9 F3 00          180 			lda	#0h
00AB F9 07          181 			sta0	OperandX+7
00AD 20 08 38       182 			call	.X_trans_Z
00B0 20 00 00       183 			call	CheckOutData
00B3 20 09 F0       184 			call	.Z_trans_X						
00B6 20 08 9C       185 			call	.X_trans_R			 					 					
00B9 F5 00          186 			lda0	SignX
00BB A7 01          187 			cmpe	#01h
00BD 06 01 5B       188 			brz	.DataError
00C0 F5 00          189 			lda0	PointX
00C2 A7 00          190 			cmpe	#0h
00C4 07 01 5B       191 			brnz	.DataError
00C7 F5 05          192 			lda0	OperandX+5
00C9 A7 00          193 			cmpe	#0h
00CB 07 01 5B       194 			brnz	.DataError
00CE 20 05 DF       195 			call	.ClrY
00D1 F3 70          196 			lda	#70h		;Max69!
00D3 F9 06          197 			sta0	OperandY+6
00D5 F3 00          198 			lda	#0h
00D7 FC 28          199 			sta	PP
00D9 20 00 00       200 			call    Subtration
00DC F5 00          201 			lda0	SignZ
00DE A7 00          202 			cmpe	#0h
00E0 06 01 5B       203 			brz	.DataError			 			
00E3 20 0B A8       204 			call	.R_trans_X
00E6 F3 00          205 			lda	#0h
00E8 FC 28          206 			sta	PP
00EA 20 05 DF       207 			call	.ClrY
00ED F3 08          208 			lda	#08h
00EF F9 06          209 			sta0	OperandY+6
00F1 20 00 00       210 			call    Multiplation
00F4 F3 01          211 			lda	#01h
00F6 FC 28          212 			sta	PP
00F8 F5 05          213 			lda0	OperandZ+5
00FA FD 00          214 			sta	.M_bcdbuf
00FC F5 06          215 			lda0	OperandZ+6
00FE FD 01          216 			sta	.M_bcdbuf+1
0100 20 00 00       217 			call	.Bcd2Hex
0103 F3 00          218 			lda     #^(Order_tab)
0105 F9 02          219                 	sta0    TableC+2
0107 F3 0C          220                 	lda     #@(Order_tab)
0109 F9 01          221                	 	sta0    TableC+1
010B F3 85          222                		lda     #<(Order_tab)
010D F9 00          223                		sta0    TableC
010F F5 01          224                		lda0	TableC+1
0111 99 00          225                		addc	.M_hexbuf 
0113 F9 01          226                		sta0	TableC+1
0115 F5 00          227                		lda0	TableC
0117 99 01          228                		addc	.M_hexbuf+1
0119 F9 00          229                		sta0	TableC
011B 05 01 23       230                		brnc	.GetDataTable	
011E F5 01          231  			lda0	TableC+1
0120 1F             232  			inca
0121 F9 01          233  			sta0	TableC+1
0123                234 .GetDataTable: 		
0123 F5 02          235 			lda0	TableC+2
0125 FC 54          236 			sta	TPP
0127 F5 01          237 			lda0	TableC+1
0129 FC 02          238 			sta	TPH
012B F5 00          239 			lda0	TableC 
012D FC 01          240 			sta	TPL
012F F3 00          241 			lda	#>OperandZ
0131 FC 28          242 			sta	PP
0133 F3 00          243 			lda	#<OperandZ
0135 FC 21          244 			sta	DP
0137 F3 07          245 			lda	#07h
0139 F9 00          246 			sta0	.NumCnt
013B                247 .SaveTbData:			
013B F5 00          248 			lda0	.NumCnt
013D A7 00          249 			cmpe	#0h
013F 06 01 4D       250 			brz	.EndSaveTbData
0142 F8             251 			ldv
0143 FE             252 			sta 	i
0144 18             253 			incdp
0145 F5 00          254 			lda0	.NumCnt
0147 3F             255 			deca
0148 F9 00          256 			sta0	.NumCnt
014A 02 01 3B       257 			br	.SaveTbData
014D                258 .EndSaveTbData:
014D F8             259 			ldv
014E F9 00          260 			sta0	PointZ	
0150 F3 01          261 			lda	#>Sign_r
0152 FC 28          262 			sta	PP
0154 F1 58          263 			lda	Sign_r
0156 F9 00          264 			sta0	SignZ		
0158 02 01 5F       265 			br	.EndFactorial					 							
015B                266 .DataError:
015B F3 01          267 			lda	#01h
015D F9 00          268 			sta0	ErrorFlag
015F                269 .EndFactorial:			
015F 24             270 			ret	
+                   271 ;--------------------------------------------						
0160                272 .InputCheck::		
0160 F3 00          273 			lda	#0h
0162 F9 00          274 			sta0	ErrorFlag			
0164 20 00 00       275 			call	CheckOutData
0167 F5 00          276 			lda0	PointZ
0169 A7 00          277 			cmpe	#0h
016B 07 01 7D       278 			brnz	.ErrData
016E F5 05          279 			lda0	OperandZ+5
0170 A7 00          280 			cmpe	#0h
0172 07 01 7D       281 			brnz	.ErrData
0175 F5 06          282 			lda0	OperandZ+6
0177 A7 70          283 			cmpe	#70h
0179 05 01 7D       284 			brnc	.ErrData
017C 24             285 			ret
+                   286 			 
017D                287 .ErrData:
017D F3 01          288 			lda	#01h
017F F9 00          289 			sta0	ErrorFlag
0181 24             290  			ret
+                   291 ;-------------------------------------------
0182                292 .CKNear_1::
+                   293 			
0182 20 05 DF       294 			call	.ClrY
0185 F3 99          295 			lda	#99h

⌨️ 快捷键说明

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