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

📄 syntax.asl

📁 这是用台湾KingB 8位单片机开发的科学计算器程序
💻 ASL
📖 第 1 页 / 共 4 页
字号:
+                     1 ;/subrutine name : Syntax.asm
+                     2 ;/user bady      : HE83137 
+                     3 ;/fast clock     : 4Mhz
+                     4 ;/slow clock     : 32768khz
+                     5 ;/programer      : Alton	
0002                  6 .INPP		EQU		0x02 
007B                  7 .Calc		EQU		0x7b
+B 00 01

+                     8 		.area   Syntaxc(code)
0000                  9 .Syntax::	
+                    10 		
0000 F3 00           11 		lda	#0h			
0002 F9 00           12 		sta0	.LRcnt
0004 F9 00           13 		sta0	.BeforePari
0006 F9 00           14 		sta0	.DmsCount
0008 F9 00           15 		sta0	.AfterPari
000A F9 00           16 		sta0	ErrorFlag			;ErrorFlag=1 ma error
000C F9 00           17 		sta0	.INDP				;ErrorFlag=2 syntax error		 	
000E F9 00           18 		sta0	.CommaFlag			;ErrorFlag=3 stack error
0010 F9 00           19 		sta0	.SimeFlag
0012 F5 00           20 		lda0	.FormulaFlag			;IF flag=1 belong to formula mode
0014 A7 01           21 		cmpe	#01h
0016 07 00 1D        22 		brnz	.SyntaxCK
0019 F3 02           23 		lda	#02h
001B F9 00           24 		sta0	.INDP					
+                    25 ;----------------.EndSyntaxCK---------------------------		
001D                 26 .SyntaxCK:	
001D F3 00           27 		lda	#0h
001F FC 28           28 		sta	PP		 		 
0021 F5 00           29 		lda0	.DataDP
0023 A7 00           30 		cmpe	#0h
0025 06 02 7E        31 		brz	.EndSymbor
0028 A5 00           32 		cmpe	.INDP	
002A 06 01 78        33 		brz	.EndSyntaxCK
+                    34 ;-------------------------------------------		
002D                 35 .StartCK: 	
002D F5 00           36 		lda0	ErrorFlag
002F A7 02           37 		cmpe	#02h
0031 06 02 7E        38 		brz	.EndSymbor
0034 F3 02           39 		lda	#.INPP
0036 FC 28           40 		sta	PP
0038 F5 00           41 		lda0	.INDP
003A FC 21           42 		sta	DP
003C F2              43 		lda	i
003D F9 00           44 		sta0	.DataBuf
003F F9 01           45 		sta0	.DataBuf+1		
0041 F5 00           46 		lda0	.INDP
0043 1F              47 		inca
0044 F9 00           48 		sta0	.INDP		 		
0046 02 00 49        49 		br	.Complier
+                    50 
+                    51 ;-------------------------------------------
0049                 52 .Complier::
0049 F5 00           53 		lda0	ErrorFlag
004B A7 02           54 		cmpe	#02h
004D 06 00 6F        55 		brz	.ErrorSym
0050 20 00 82        56 		call	.SymborCK	
0053 F5 00           57 		lda0	.BeforePari
0055 A7 00           58 		cmpe	#0h
0057 07 00 5A        59 		brnz	.StartCmp
+                    60 		 	
005A                 61 .StartCmp:		
005A 20 02 7F        62 		call	.StackCk
005D F5 00           63 		lda0	ErrorFlag
005F A7 02           64 		cmpe	#02h
0061 06 00 6F        65 		brz	.ErrorSym		
0064                 66 .EndComplier:
0064 F5 00           67 		lda0	.AfterPari
0066 F9 00           68 		sta0	.BeforePari
0068 F5 00           69 		lda0	.DataBuf
006A F9 00           70 		sta0	.Buf1		
006C 02 00 7F        71 		br	.EndSyntax
006F                 72 .ErrorSym:
006F F3 02           73 		lda	#02h
0071 F9 00           74 		sta0	ErrorFlag
0073 F3 00           75 		lda	#0h
0075 F9 00           76 		sta0	.TFlag		 
0077 F5 00           77 		lda0	.INDP
0079 3F              78 		deca
007A F9 00           79 		sta0	.SFDP
007C 02 00 2D        80 		br	.StartCK		
007F                 81 .EndSyntax:
007F 02 00 1D        82 		br	.SyntaxCK 		
+                    83 ;-------------------------------------------		
0082                 84 .SymborCK:
0082 20 06 37        85 		call	.FunctCode
0085 F5 00           86 		lda0	.AfterPari
0087 A7 08           87 		cmpe	#08h
0089 06 02 7E        88 		brz	.EndSymbor
008C F5 00           89 		lda0	.DataBuf
008E A7 7A           90 		cmpe	#07ah
0090 06 00 6F        91 		brz	.ErrorSym
0093 A7 D0           92 		cmpe	#0d0h
0095 06 04 BF        93 		brz	.EnPolRec
0098 A7 D6           94 		cmpe	#0d6h
009A 06 04 BF        95 		brz	.EnPolRec		
009D A7 B0           96 		cmpe	#0b0h
009F 06 01 61        97 		brz	.Semicolon
00A2 A7 A4           98 		cmpe	#0a4h
00A4 06 01 01        99 		brz	.IsADD
00A7 A7 A5          100 		cmpe	#0a5h
00A9 06 01 08       101 		brz	.IsDEC
00AC A7 A6          102 		cmpe	#0a6h
00AE 06 01 0F       103 		brz	.IsMUL			
00B1 A7 A7          104 		cmpe	#0a7h
00B3 06 01 16       105 		brz	.IsDIV
00B6 A7 B2          106 		cmpe	#0b2h
00B8 06 01 1D       107 		brz	.IsLC
00BB A7 B3          108 		cmpe	#0b3h
00BD 06 01 24       109 		brz	.IsRC
00C0 A7 AA          110 		cmpe	#0aah
00C2 06 01 2B       111 		brz	.IsDRG
00C5 A7 BB          112 		cmpe	#0bbh
00C7 06 01 2B       113 		brz	.IsDRG
00CA A7 CE          114 		cmpe	#0ceh
00CC 06 01 2B       115 		brz	.IsDRG
00CF A7 A8          116 		cmpe	#0a8h
00D1 06 01 39       117 		brz	.IsSignDec
00D4 A7 B6          118 		cmpe	#0b6h
00D6 06 01 40       119 		brz	.IsMemoryClr
00D9 A7 B4          120 		cmpe	#0b4h
00DB 06 01 47       121 		brz	.Comma
00DE A7 C3          122 		cmpe	#0c3h
00E0 06 01 53       123 		brz	.Fraction
00E3 A7 B7          124 		cmpe	#0b7h
00E5 06 01 5A       125 		brz	.Dms								
00E8 A7 A0          126 		cmpe	#0a0h
00EA 06 01 32       127 		brz	.IsPoint		
00ED 05 00 FA       128 		brnc	.IsNum
00F0 20 06 66       129 		call	.CkMemory
00F3 F5 00          130 		lda0	.AfterPari
00F5 A7 00          131 		cmpe	#0h
00F7 07 02 7E       132 		brnz	.EndSymbor
+                   133 ;-------------------------------------------		
00FA                134 .IsNum:		
00FA F3 01          135 		lda	#01h
00FC F9 00          136 		sta0	.AfterPari		
00FE 02 02 7E       137 		br	.EndSymbor
0101                138 .IsADD:
0101 F3 02          139 		lda	#02h
0103 F9 00          140 		sta0	.AfterPari
0105 02 02 7E       141 		br	.EndSymbor
0108                142 .IsDEC:
0108 F3 03          143 		lda	#03h
010A F9 00          144 		sta0	.AfterPari
010C 02 02 7E       145 		br	.EndSymbor		
010F                146 .IsMUL:
010F F3 04          147 		lda	#04h
0111 F9 00          148 		sta0	.AfterPari
0113 02 02 7E       149 		br	.EndSymbor
0116                150 .IsDIV:
0116 F3 05          151 		lda	#05h
0118 F9 00          152 		sta0	.AfterPari
011A 02 02 7E       153 		br	.EndSymbor			
011D                154 .IsLC:
011D F3 06          155 		lda	#06h
011F F9 00          156 		sta0	.AfterPari
0121 02 02 7E       157 		br	.EndSymbor
0124                158 .IsRC:
0124 F3 07          159 		lda	#07h
0126 F9 00          160 		sta0	.AfterPari
0128 02 02 7E       161 		br	.EndSymbor
012B                162 .IsDRG:
012B F3 0A          163 		lda	#0ah
012D F9 00          164 		sta0	.AfterPari
012F 02 02 7E       165 		br	.EndSymbor		
0132                166 .IsPoint:
0132 F3 09          167 		lda	#09h
0134 F9 00          168 		sta0	.AfterPari
0136 02 02 7E       169 		br	.EndSymbor
0139                170 .IsSignDec:
0139 F3 0B          171 		lda	#0bh
013B F9 00          172 		sta0	.AfterPari
013D 02 02 7E       173 		br	.EndSymbor					
0140                174 .IsMemoryClr:
0140 F3 0C          175 		lda	#0ch
0142 F9 00          176 		sta0	.AfterPari
0144 02 02 7E       177 		br	.EndSymbor
0147                178 .Comma:
0147 F3 0F          179 		lda	#0fh
0149 F9 00          180 		sta0	.AfterPari		 
014B F5 00          181 		lda0	.CommaFlag
014D 3F             182 		deca
014E F9 00          183 		sta0	.CommaFlag		 
0150 02 02 7E       184 		br	.EndSymbor	
0153                185 .Fraction:
0153 F3 10          186 		lda	#10h
0155 F9 00          187 		sta0	.AfterPari
0157 02 02 7E       188 		br	.EndSymbor
015A                189 .Dms:
015A F3 11          190 		lda	#11h
015C F9 00          191 		sta0	.AfterPari
015E 02 02 7E       192 		br	.EndSymbor
0161                193 .Semicolon:
0161 F3 12          194 		lda	#12h
0163 F9 00          195 		sta0	.AfterPari
0165 02 02 7E       196 		br	.EndSymbor											
0168                197 .OtherFunc:
0168 F3 02          198 		lda	#02h
016A F9 00          199 		sta0	ErrorFlag
016C F3 00          200 		lda 	#0h		;set error site
016E F9 00          201 		sta0	.TFlag
0170 F5 00          202 		lda0	.INDP
0172 3F             203 		deca
0173 F9 00          204 		sta0	.SFDP
0175 02 02 7E       205 		br	.EndSymbor		
+                   206 ;-------------------------------------------		
0178                207 .EndSyntaxCK:
0178 F5 00          208 		lda0	.DmsCount
017A A7 00          209 		cmpe	#0h
017C 06 01 89       210 		brz	.ChkSimeflag
017F F5 00          211 		lda0	.DataBuf
0181 A7 B7          212 		cmpe	#0b7h		;dms
0183 06 01 89       213 		brz	.ChkSimeflag
0186 02 02 71       214 		br	.SyntaxError
0189                215 .ChkSimeflag:	
0189 F5 00          216 		lda0	.CommaFlag
018B A7 00          217 		cmpe	#0h
018D 06 01 9C       218 		brz	.CheckSime
0190 F5 00          219 		lda0	.KeyPos
0192 A7 B5          220 		cmpe	#0b5h
0194 06 01 9C       221 		brz	.CheckSime
0197 A7 DF          222 		cmpe	#0dfh		
0199 07 02 71       223 		brnz	.SyntaxError	
019C                224 .CheckSime:		
019C F5 00          225 		lda0	.SimeFlag
019E A7 01          226 		cmpe	#01h
01A0 07 01 E5       227 		brnz	.CkCommaFlag
01A3 F5 00          228 		lda0	.KeyPos
01A5 A7 B5          229 		cmpe	#0b5h
01A7 06 01 AF       230 		brz	.3$ 
01AA A7 DF          231 		cmpe	#0dfh		
01AC 07 02 71       232 		brnz	.SyntaxError
01AF                233 .3$:						
01AF F3 02          234 		lda	#02h
01B1 FC 28          235 		sta	PP
01B3 F3 00          236 		lda	#0h
01B5 FC 21          237 		sta	DP
01B7 F2             238 		lda	i
01B8 A7 B0          239 		cmpe	#0b0h		;bo is Simecolon ";"
01BA 06 02 14       240 		brz	.CkCommaFlagFirst
01BD F3 00          241 		lda	#>StateFlag
01BF FC 28          242 		sta	PP
01C1 F1 00          243 		lda	StateFlag
01C3 CB 40          244 		anda	#40h		;check	SDmode
01C5 A7 40          245 		cmpe	#40h
01C7 06 01 D4       246 		brz	.CheckSDmd
01CA F1 00          247 		lda	StateFlag
01CC CB 07          248 		anda	#07h		;check	SDmode		
01CE 07 01 DE       249 		brnz	.CheckLRmd
01D1 02 02 71       250 		br	.SyntaxError
01D4                251 .CheckSDmd:		
01D4 F5 00          252 		lda0	.CommaFlag
01D6 A7 00          253 		cmpe	#0h
01D8 06 02 3A       254 		brz	.Endck
01DB 02 02 71       255 		br	.SyntaxError
01DE                256 .CheckLRmd:				 	
01DE F5 00          257 		lda0	.CommaFlag
01E0 A7 FF          258 		cmpe	#0ffh
01E2 07 02 71       259 		brnz	.SyntaxError
01E5                260 .CkCommaFlag:	
01E5 F5 00          261 		lda0	.SimeFlag
01E7 A7 02          262 		cmpe	#02h
01E9 04 02 71       263 		brc	.SyntaxError		
01EC F3 00          264 		lda	#>StateFlag
01EE FC 28          265 		sta	PP
01F0 F1 00          266 		lda	StateFlag
01F2 CB 07          267 		anda	#07h
01F4 06 02 1E       268 		brz	.CompSDmode
01F7 F5 00          269 		lda0	.KeyPos
01F9 A7 B5          270 		cmpe	#0b5h
01FB 06 02 03       271 		brz	.4$
01FE A7 DF          272 		cmpe	#0dfh
0200 07 02 1E       273 		brnz	.CompSDmode
+                   274 		;br	.Endck			
0203                275 .4$:		
0203 F5 00          276 		lda0	.CommaFlag
0205 A7 FF          277 		cmpe	#0ffh 
0207 06 02 3A       278 		brz	.Endck
020A F5 00          279 		lda0	.SimeFlag
020C A7 01          280 		cmpe	#01h
020E 06 02 3A       281 		brz	.Endck				
0211 02 06 29       282 		br 	.SynError	 		 
0214                283 .CkCommaFlagFirst:
0214 F5 00          284 		lda0	.CommaFlag
0216 A7 00          285 		cmpe	#0h
0218 07 06 29       286 		brnz	.SynError
021B 02 02 3A       287 		br 	.Endck	 
021E                288 .CompSDmode:		
021E F5 00          289 		lda0	.CommaFlag
0220 A7 00          290 		cmpe	#0h
0222 06 02 3A       291 		brz	.Endck
0225 F3 00          292 		lda	#>StateFlag
0227 FC 28          293 		sta	PP
0229 F1 00          294 		lda	StateFlag
022B CB 07          295 		anda	#07h		;check	LRmode
022D 06 06 29       296 		brz	.SynError
0230 F5 00          297 		lda0	.CommaFlag
0232 A7 FF          298 		cmpe	#0ffh
0234 06 02 3A       299 		brz	.Endck		
0237 02 06 29       300 		br	.SynError
023A                301 .Endck:		
023A F3 01          302 		lda	#01h
023C FC 28          303 		sta	PP
023E F3 00          304 		lda	#^(.DataEndCheck)
0240 FC 54          305 		sta	TPP
0242 F3 09          306 		lda	#@(.DataEndCheck)
0244 FC 02          307 		sta	TPH
0246 F3 B8          308 		lda	#<(.DataEndCheck)
0248 FC 01          309 		sta	TPL
024A                310 .SearchEnd:		
024A F8             311 		ldv
024B F9 01          312 		sta0	.DataBuf+1	 
024D A7 FF          313 		cmpe	#0ffh
024F 06 02 60       314 		brz	.Endend
0252 F3 00          315 		lda	#0h
0254 FC 28          316 		sta	PP
0256 F5 01          317 		lda0	.DataBuf+1
0258 A5 00          318 		cmpe	.DataBuf
025A 07 02 4A       319 		brnz	.SearchEnd		
025D 02 02 7E       320 		br	.EndSymbor	
0260                321 .Endend:	
0260 F5 00          322 		lda0	.DataBuf		
0262 A7 0A          323 		cmpe	#0ah
0264 04 02 71       324 		brc	.SyntaxError				
0267 F5 00          325 		lda0	.DmsCount
0269 A7 00          326 		cmpe	#0h
026B 06 02 7E       327 		brz	.EndSymbor
026E 02 02 7E       328 		br 	.EndSymbor
0271                329 .SyntaxError:						
0271 F3 02          330 		lda	#02h
0273 F9 00          331 		sta0	ErrorFlag
0275 F3 00          332 		lda 	#0h		;set error site
0277 F9 00          333 		sta0	.TFlag
0279 F5 00          334 		lda0	.INDP
027B 3F             335 		deca
027C F9 00          336 		sta0	.SFDP			
027E                337 .EndSymbor:
027E 24             338 		ret
+                   339 
+                   340 ;-------------------------------------------		
027F                341 .StackCk:
+                   342 		
027F F5 00          343 		lda0	.BeforePari
0281 A7 00          344 		cmpe	#0h
0283 06 02 E0       345 		brz	.HeadCodCK
0286 F5 00          346 		lda0	.AfterPari
0288 A7 01          347 		cmpe	#01h
028A 06 03 26       348 		brz	.NumCK
028D A7 02          349 		cmpe	#02h
028F 06 03 7A       350 		brz	.AddDecCK
0292 A7 03          351 		cmpe	#03h
0294 06 03 7A       352 		brz	.AddDecCK
0297 A7 04          353 		cmpe	#04h
0299 06 03 BE       354 		brz	.MulDivCK
029C A7 05          355 		cmpe	#05h
029E 06 03 BE       356 		brz	.MulDivCK
02A1 A7 06          357 		cmpe	#06h
02A3 06 03 EE       358 		brz	.LCCK
02A6 A7 07          359 		cmpe	#07h
02A8 06 03 F6       360 		brz	.RCCK
02AB A7 08          361 		cmpe	#08h
02AD 06 04 4D       362 		brz	.FuncCK
02B0 A7 09          363 		cmpe	#09h
02B2 06 04 C7       364 		brz	.PointCK
02B5 A7 0A          365 		cmpe	#0ah
02B7 06 05 1B       366 		brz	.DRGCK

⌨️ 快捷键说明

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