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

📄 postfix.asl

📁 这是用台湾KingB 8位单片机开发的科学计算器程序
💻 ASL
📖 第 1 页 / 共 5 页
字号:
+                     1 ;/subrutine name : Postfix.asm
+                     2 ;/user bady      : HE83137
+                     3 ;/fast clock     : 4Mhz
+                     4 ;/slow clock     : 32768khz
+                     5 ;/programer      : Alton
0002                  6 .INPP		EQU		0x02
0002                  7 .PSPP		EQU		0x02
0050                  8 .PosfixDP	EQU		0x50
0003                  9 .STPP		EQU		0x03
00A4                 10 .ADD		EQU		0xa4
00A5                 11 .DEC		EQU		0xa5
00A6                 12 .MUL		EQU		0xa6
00A7                 13 .DIV		EQU		0xa7
00B2                 14 .LC		EQU		0xb2
00B3                 15 .RC		EQU		0xb3
00D3                 16 .XY 		EQU		0xd3
00D7                 17 .SQUX		EQU		0xd7
00D0                 18 .POL		EQU		0xd0
00D6                 19 .REC		EQU		0xd6
00A1                 20 .NUM		EQU		0xa1
00B4                 21 .Comma		EQU		0xb4
00B7                 22 .DMS		EQU		0xb7
00C3                 23 .Fract		EQU		0xc3
00C9                 24 .NCR		EQU		0xc9
00D5                 25 .NPR		EQU		0xd5
00B1                 26 .REG		EQU		0xb1
00B6                 27 .MCL		EQU		0xb6
00AB                 28 .Degree		EQU		0xab
00AC                 29 .Minute		EQU		0xac
00AD                 30 .Second		EQU		0xad
00A0                 31 .Point		EQU		0xa0
00A8                 32 .Negative	EQU		0xa8
+B 00 01

+                    33 		.area   postfix(code)
0000                 34 .Postfix::
0000 F5 00           35 		lda0	.DataDP
0002 A7 00           36 		cmpe	#0h
0004 06 00 DD        37 		brz	.NoERROR
0007 20 0F DD        38 		call	.InitPsData		
+                    39 ;===========================================
000A                 40 .IN2PS:
000A F5 00           41 		lda0	ErrorFlag
000C A7 00           42 		cmpe	#0h
000E 07 00 D1        43 		brnz	.PosFixEnd
0011 F3 00           44 		lda	#>.INDP
0013 FC 28           45 		sta	PP		 
0015 F5 00           46 		lda0	.INDP
0017 A5 00           47 		cmpe	.DataDP
0019 06 00 54        48 		brz	.PopAllFunc
001C                 49 .STPostfix:		 
001C F5 00           50 		lda0	.PSDP
001E A7 F0           51 		cmpe	#0f0h
0020 04 00 4D        52 		brc     .StackErr
0023 F3 02           53 		lda	#.INPP
0025 FC 28           54 		sta	PP
0027 F5 00           55 		lda0	.INDP
0029 FC 21           56 		sta	DP
002B F2              57 		lda	i
002C F9 00           58 		sta0	.DataBuf
002E F9 00           59 		sta0	Temp2
0030 18              60 		incdp
0031 F0 21           61 		lda	DP
0033 F9 00           62 		sta0	.INDP				
0035 F5 00           63 		lda0	.DataBuf
0037 A7 0A           64 		cmpe	#0ah
0039 04 01 00        65 		brc	.FunLCode
003C F5 00           66 		lda0	.Buf1
003E A7 00           67 		cmpe	#0h
0040 07 01 14        68 		brnz	.CmpUpDown
0043 20 0D D8        69 		call	.StoPosfix
0046 F5 00           70 		lda0	Temp2
0048 F9 00           71 		sta0	.Buf1	
004A 02 00 0A        72 		br	.IN2PS
004D                 73 .StackErr:
004D F3 03           74 		lda	#03h
004F F9 00           75 		sta0	ErrorFlag
0051 02 00 D1        76 		br	.PosFixEnd		
+                    77 ;-------------------------------------------
0054                 78 .PopAllFunc:
+                    79  
0054 F3 02           80 		lda	#.PSPP
0056 FC 28           81 		sta	PP
0058 F5 00           82 		lda0	.PSDP
005A FC 21           83 		sta	DP
005C 38              84 		decdp	
005D F0 21           85 		lda	DP
005F F2              86 		lda	i	
0060 A7 FF           87 		cmpe	#0ffh		
0062 06 00 68        88 		brz	.PopAllFunct		
0065 20 0F BF        89 		call	.ClosEndPS
0068                 90 .PopAllFunct:
0068 F3 02           91 		lda	#.PSPP
006A FC 28           92 		sta	PP
006C F3 50           93 		lda	#.PosfixDP	;posfix start dp addr
006E FC 21           94 		sta	DP
0070 F2              95 		lda	i
0071 A7 B6           96 		cmpe	#.MCL
0073 06 00 C5        97 		brz	.EndPostfix	
0076 F3 03           98 		lda	#.STPP
0078 FC 28           99 		sta	PP
007A F5 00          100 		lda0	.STDP
007C FC 21          101 		sta	DP
007E F0 21          102 		lda	DP
0080 A7 FF          103 		cmpe	#0ffh
0082 06 00 C5       104 		brz	.EndPostfix
0085 F2             105 		lda	i
0086 F9 00          106 		sta0	.DataBuf
0088 F5 00          107 		lda0	.FractCount
008A A7 01          108 		cmpe	#01h
008C 07 00 9A       109 		brnz	.NoFractcode
008F F5 00          110 		lda0	.DataBuf
0091 A7 DF          111 		cmpe	#0dfh
0093 07 00 9A       112 		brnz	.NoFractcode
0096 F3 DE          113 		lda	#0deh
0098 F9 00          114 		sta0	.DataBuf
009A                115 .NoFractcode:		
009A F5 00          116 		lda0	.DataBuf
009C A7 00          117 		cmpe	#0h
009E 06 00 C5       118 		brz	.EndPostfix		
00A1 A7 B2          119 		cmpe	#.LC
00A3 06 00 BD       120 		brz	.NotC
00A6 A7 B3          121 		cmpe	#.RC
00A8 06 00 BD       122 		brz	.NotC
00AB A7 B1          123 		cmpe	#.REG
00AD 07 00 B7       124 		brnz	.ClsFont		 
00B0 F5 00          125 		lda0	.CommaFlag
00B2 A7 FF          126 		cmpe	#0ffh
00B4 07 00 BD       127 		brnz	.NotC
00B7                128 .ClsFont:					
00B7 20 0E 87       129 		call	.NoSignal
00BA 20 0F BF       130 		call	.ClosEndPS
00BD                131 .NotC:
00BD F5 00          132 		lda0	.STDP
00BF 3F             133 		deca
00C0 F9 00          134 		sta0	.STDP
00C2 02 00 68       135 		br	.PopAllFunct
00C5                136 .EndPostfix:
00C5 F3 02          137 		lda	#.PSPP
00C7 FC 28          138 		sta	PP
00C9 F5 00          139 		lda0	.PSDP
00CB FC 21          140 		sta	DP
00CD 38             141 		decdp
00CE F3 EE          142 		lda	#0eeh		;EEH  Posfix end code
00D0 FE             143 		sta	i
00D1                144 .PosFixEnd:
+                   145 		 
00D1 F5 00          146 		lda0	ErrorFlag
00D3 A7 00          147 		cmpe	#0h
00D5 06 00 DD       148 		brz	.NoERROR
00D8 F5 00          149 		lda0	.INDP
00DA F9 00          150 		sta0	.SFDP
00DC 24             151 		ret
00DD                152 .NoERROR:	
00DD F3 03          153 		lda	#03h
00DF FC 28          154 		sta	PP
00E1 F3 00          155 		lda	#0h
00E3 FC 21          156 		sta	DP
00E5                157 .CKloop:		
00E5 F2             158 		lda	i
00E6 A7 00          159 		cmpe	#0h
00E8 06 00 FF       160 		brz	.EndFractCK
00EB A7 DF          161 		cmpe	#0dfh	;Fract 1
00ED 06 00 F4       162 		brz	.CKnext
00F0 18             163 		incdp	
00F1 02 00 E5       164 		br	.CKloop
00F4                165 .CKnext:
00F4 18             166 		incdp
00F5 F2             167 		lda	i
00F6 A7 B2          168 		cmpe	#0b2h	;(
00F8 07 00 E5       169 		brnz	.CKloop
00FB F3 02          170 		lda	#02h
00FD F9 00          171 		sta0	ErrorFlag	
00FF                172 .EndFractCK:			
00FF 24             173 		ret		
+                   174 ;-------------------------------------------
0100                175 .FunLCode::
+                   176 		
0100 F5 00          177 		lda0	.DataBuf
0102 F9 01          178 		sta0	.DataBuf+1
0104 20 0A 64       179 		call	.CheckPari
0107 20 0E F1       180 		call	.CheckMem
010A F5 00          181 		lda0	.AfterPari
010C A7 01          182 		cmpe	#01h
010E 06 06 D7       183 		brz	.MemoryData
0111 02 01 C3       184 		br	.CmpFunct
+                   185 ;-------------------------------------------
0114                186 .CmpUpDown:
0114 F5 00          187 		lda0	.Buf1
0116 F9 01          188 		sta0	.DataBuf+1
0118 A7 AB          189 		cmpe	#.Degree	;#0aah
011A 06 01 A1       190 		brz	.SaveNum
011D A7 AC          191 		cmpe	#.Minute	;#0bbh
011F 06 01 A1       192 		brz	.SaveNum
0122 A7 AD          193 		cmpe	#.Second	;#0ceh
0124 06 01 A1       194 		brz	.SaveNum
0127 A7 A8          195 		cmpe	#.Negative
0129 06 01 A1       196 		brz	.SaveNum
012C A7 B4          197 		cmpe	#.Comma
012E 06 01 A1       198 		brz	.SaveNum
0131 A7 B0          199 		cmpe	#0b0h		;---5
0133 06 01 A1       200 		brz	.SaveNum	;---5
0136 A7 AE          201 		cmpe	#0aeh
0138 06 01 A1       202 		brz	.SaveNum
013B F5 00          203 		lda0	.DataBuf
013D F9 00          204 		sta0	.Buf1		;.Buf1
013F F5 01          205 		lda0	.DataBuf+1
0141 F9 00          206 		sta0	.DataBuf
0143 20 0A 64       207 		call	.CheckPari
0146 F5 00          208 		lda0	Temp2
0148 F9 00          209 		sta0	.DataBuf
014A F3 02          210 		lda	#02h
014C FC 28          211 		sta	PP
014E F3 50          212 		lda	#.PosfixDP
0150 FC 21          213 		sta	DP
0152 F2             214 		lda	i
0153 A7 00          215 		cmpe	#0h
0155 06 01 A1       216 		brz	.SaveNum
0158 F5 00          217 		lda0	.AfterPari
015A A7 00          218 		cmpe	#0h
015C 06 01 A1       219 		brz	.SaveNum
015F A7 01          220 		cmpe	#01h
0161 06 01 BC       221 		brz	.ErrorFlag
0164 A7 02          222 		cmpe	#02h
0166 06 01 A1       223 		brz	.SaveNum
0169 A7 03          224 		cmpe	#03h
016B 06 01 A1       225 		brz	.SaveNum 
016E A7 04          226 		cmpe	#04h
0170 06 01 A1       227 		brz	.SaveNum 
0173 A7 05          228 		cmpe	#05h		;cnr
0175 06 01 A1       229 		brz	.SaveNum
0178 A7 06          230 		cmpe	#06h		;05h
017A 06 01 A1       231 		brz	.SaveNum
017D A7 07          232 		cmpe	#07h		;06h
017F 06 01 A1       233 		brz	.SaveNum
0182 A7 08          234 		cmpe	#08h		;07
0184 06 01 A1       235 		brz	.SaveNum		
0187 A7 09          236 		cmpe	#09h
0189 06 01 A1       237 		brz	.SaveNum
018C A7 0A          238 		cmpe	#0ah
018E 06 01 BC       239 		brz	.ErrorFlag
0191 A7 0B          240 		cmpe	#0bh
0193 06 01 A1       241 		brz	.SaveNum
0196 A7 0C          242 		cmpe	#0ch
0198 06 01 A1       243 		brz	.SaveNum		 	
019B 02 00 0A       244 		br	.IN2PS
+                   245 ;-------------------------------------------		
019E                246 .SaveNumCls:
019E 20 0F BF       247 		call	.ClosEndPS
01A1                248 .SaveNum:	
01A1 F5 00          249 		lda0	.DataBuf
01A3 A7 A0          250 		cmpe	#.Point		;Point
01A5 07 01 B2       251 		brnz	.NumSave	
01A8 F5 00          252 		lda0	.PointFlag
01AA 1F             253 		inca
01AB F9 00          254 		sta0	.PointFlag
01AD A7 02          255 		cmpe	#02h
01AF 04 01 BC       256 		brc	.ErrorFlag	
01B2                257 .NumSave:		
01B2 20 0D D8       258 		call	.StoPosfix
01B5 F5 00          259 		lda0	Temp2
01B7 F9 00          260 		sta0	.Buf1
01B9 02 00 0A       261 		br	.IN2PS
01BC                262 .ErrorFlag:
01BC F3 02          263 		lda	#02h
01BE F9 00          264 		sta0	ErrorFlag
01C0 02 00 D1       265 		br	.PosFixEnd
+                   266 
+                   267 ;===========================================
01C3                268 .CmpFunct:	
+                   269 		
01C3 F5 00          270 		lda0	.DataBuf
01C5 A7 D0          271 		cmpe	#.POL
01C7 06 02 83       272 		brz	.DoPolRec 
01CA A7 D6          273 		cmpe	#.REC
01CC 06 02 83       274 		brz	.DoPolRec 
01CF A7 B6          275 		cmpe	#.MCL
01D1 06 09 E0       276 		brz	.StoInPosfix
01D4 A7 B7          277 		cmpe	#.DMS
01D6 06 03 06       278 		brz	.DoDMS
01D9 A7 C3          279 		cmpe	#.Fract
01DB 06 03 63       280 		brz	.DoFract
01DE A7 A0          281 		cmpe	#.Point
01E0 06 01 A1       282 		brz	.SaveNum
01E3 A7 A8          283 		cmpe	#.Negative
01E5 06 05 34       284 		brz	.SetSignDec
01E8 A7 A4          285 		cmpe	#.ADD
01EA 06 03 D4       286 		brz	.SetADDEC
01ED A7 A5          287 		cmpe	#.DEC
01EF 06 03 D4       288 		brz	.SetADDEC
01F2 A7 A6          289 		cmpe	#.MUL
01F4 06 04 BA       290 		brz	.SetMulDiv
01F7 A7 A7          291 		cmpe	#.DIV
01F9 06 04 BA       292 		brz	.SetMulDiv
01FC A7 B2          293 		cmpe	#.LC
01FE 06 05 BE       294 		brz	.LeftC
0201 A7 B3          295 		cmpe	#.RC
0203 06 06 B5       296 		brz	.RightC
0206 A7 B4          297 		cmpe	#.Comma
0208 06 02 1A       298 		brz	.DoComma
020B A7 B0          299 		cmpe	#0b0h		;---5
020D 06 02 2C       300 		brz	.DoSime
0210 F5 00          301 		lda0	.AfterPari
0212 A7 01          302 		cmpe	#01h
0214 06 06 D7       303 		brz	.MemoryData
0217 02 07 6E       304 		br	.FuncCheck
+                   305 ;-------------------------------------------		
021A                306 .DoComma:	
+                   307 		 
021A F3 00          308 		lda	#0h
021C F9 00          309 		sta0	.DmsCount
021E F9 00          310 		sta0	.PointFlag
0220 20 0F BF       311 		call	.ClosEndPS		
0223 20 0C 2A       312 		call	.PushData	;.StoFuncPS	;----219		
0226 20 0F BF       313 		call	.ClosEndPS
0229 02 02 6D       314 		br	.EndComma	;219
022C                315 .DoSime:	
+                   316 		 
022C F3 00          317 		lda	#0h
022E F9 00          318 		sta0	.PointFlag
0230 20 0F BF       319 		call	.ClosEndPS		
0233 20 0C 2A       320 		call	.PushData	;.StoFuncPS	;----219		
0236 20 0F BF       321 		call	.ClosEndPS
0239 F3 B0          322 		lda	#0b0h
023B F9 00          323 		sta0	.Buf1

⌨️ 快捷键说明

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