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

📄 postfixvalume.asl

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

+                     8 		.area	.PosValData(data,abs)
+                     9 		.org	0x7b
007B                 10 .PsValDP::	.ds		1
007C                 11 .IndexDP::	.ds		1
007D                 12 .P3DP::		.ds		1
007E                 13 .P2DP::		.ds		1
007F                 14 .FunDP::	.ds		1				
+B 00 02

+                    15 		.area	.PosVal(code)
0000                 16 .PosValue::
0000 F3 00           17 		lda	#0h		;Clear ErrorCnt
0002 F9 00           18 		sta0	.ErrorCnt
0004 F5 00           19 		lda0	.DataDP
0006 A7 00           20 		cmpe	#0h
0008 06 01 B3        21 		brz	.NoDataInp
000B F3 00           22 		lda	#0h
000D F9 00           23 		sta0	.FinFlag
000F 20 0A 32        24 		call	.ClrSK
0012 20 08 4C        25 		call	.PushSkData
0015 F3 F0           26 		lda	#0f0h
0017 F9 7E           27 		sta0	.P2DP
0019 F3 50           28 		lda	#50h
001B F9 7D           29 		sta0	.P3DP		
001D F3 00           30 		lda	#0h		
001F F9 7C           31 		sta0	.IndexDP		
0021 FC 21           32 		sta	DP			
0023 F3 03           33 		lda	#03h
0025 FC 28           34 		sta	PP		
0027 F2              35 		lda	i		
0028 F9 7B           36 		sta0	.PsValDP		
002A                 37 .PosValueHead:			
002A F3 00           38 		lda	#0h
002C F9 7C           39 		sta0	.IndexDP
+                    40 		 
002E                 41 .CalcPsVal:			
002E F5 7C           42 		lda0	.IndexDP
0030 FC 21           43 		sta	DP			
0032 F3 03           44 		lda	#03h
0034 FC 28           45 		sta	PP		
0036 F2              46 		lda	i		
0037 F9 7B           47 		sta0	.PsValDP								
0039 F2              48 		lda	i
003A A7 F0           49 		cmpe	#0f0h
003C 04 00 7F        50 		brc	.CKnextIS0
003F A7 00           51 		cmpe	#0h
0041 06 00 86        52 		brz	.PsValEnd
0044 A7 FF           53 		cmpe	#0ffh
0046 06 00 77        54 		brz	.SchNext
0049                 55 .CalcPosfixAns:		
0049 20 01 CE        56 		call	.CalcVal
004C F5 00           57 		lda0	.ErrorCnt
004E 1F              58 		inca
004F F9 00           59 		sta0	.ErrorCnt
0051 A7 80           60 		cmpe	#80h
0053 07 00 5A        61 		brnz	.GetNextVal
0056 F3 04           62 		lda	#04h
0058 F9 00           63 		sta0	ErrorFlag		
005A                 64 .GetNextVal:		
005A F5 00           65 		lda0	ErrorFlag
005C A7 00           66 		cmpe	#0h
005E 07 01 CD        67 		brnz	.EndPos	
0061 F5 00           68 		lda0	.FinFlag
0063 A7 00           69 		cmpe	#0h
0065 06 00 77        70 		brz	.SchNext		
0068 20 0A 5F        71 		call	.MoveP3DP
006B 20 0A AB        72 		call	.ReSetP3ST		
006E F3 00           73 		lda	#0h
0070 F9 7C           74 		sta0	.IndexDP
0072 F9 00           75 		sta0	.FinFlag
0074 02 00 2E        76 		br	.CalcPsVal
0077                 77 .SchNext:
0077 F5 7C           78 		lda0	.IndexDP
0079 1F              79 		inca
007A F9 7C           80 		sta0	.IndexDP
007C 02 00 2E        81 		br	.CalcPsVal
007F                 82 .CKnextIS0:
007F 18              83 		incdp
0080 F2              84 		lda	i
0081 A7 00           85 		cmpe	#0h
0083 07 00 49        86 		brnz	.CalcPosfixAns
+                    87 				
0086                 88 .PsValEnd:			
0086 20 0A 5F        89 		call	.MoveP3DP
0089 20 0A AB        90 		call	.ReSetP3ST		
008C F3 03           91 		lda	#03h
008E FC 28           92 		sta	PP		
0090 F3 01           93 		lda	#01h
0092 FC 21           94 		sta	DP
+                    95 		
0094                 96 .KeepCK:		
0094 F2              97 		lda	i
0095 A7 00           98 		cmpe	#0h
0097 06 00 A3        99 		brz	.EndPosValue
009A A7 FF          100 		cmpe	#0ffh
009C 07 00 2A       101 		brnz	.PosValueHead			
009F 18             102 		incdp
00A0 02 00 94       103 		br	.KeepCK
00A3                104 .EndPosValue:	
+                   105 ;;;;;;;SDmode--------------------------
00A3 F3 01          106 		lda	#01h
00A5 FC 28          107 		sta	PP
00A7 F1 00          108 		lda	StateFlag
00A9 CB 40          109 		anda	#40h
00AB A7 40          110 		cmpe	#40h
00AD 07 01 01       111 		brnz	.EndValCalc
00B0 F5 00          112 		lda0	.KeyPos
00B2 A7 B5          113 		cmpe	#0b5h
00B4 06 00 BC       114 		brz	.StoreSD
00B7 A7 DF          115 		cmpe	#0dfh
00B9 07 01 01       116 		brnz	.EndValCalc
00BC                117 .StoreSD:
00BC F3 02          118 		lda	#02h
00BE FC 28          119 		sta	PP
00C0 F3 00          120 		lda	#0h
00C2 FC 21          121 		sta	DP
00C4 F2             122 		lda	i
00C5 A7 B0          123 		cmpe	#0b0h
00C7 06 01 01       124 		brz	.EndValCalc
00CA F5 00          125 		lda0	.Buf4
00CC A7 B0          126 		cmpe	#0b0h
00CE 06 01 01       127 		brz	.EndValCalc		
00D1 20 00 00       128 		call	.Z_trans_I
00D4 20 00 00       129 		call	.Z_trans_X
00D7 20 16 36       130 		call	.ChkOverExp50
00DA F5 00          131 		lda0	ErrorFlag
00DC A7 00          132 		cmpe	#0h
00DE 07 01 CD       133 		brnz	.EndPos 					
00E1 20 00 00       134 		call	.I_trans_X
00E4 20 00 00       135 		call	.X_trans_LRX
00E7 F5 00          136 		lda0	.KeyPos
00E9 A7 DF          137 		cmpe	#0dfh
00EB 07 00 FB       138 		brnz	.SD_DTmode
00EE 20 00 00       139 		call	.ClrX
00F1 F3 02          140 		lda	#02h
00F3 F9 06          141 		sta0	OperandX+6			
00F5 20 15 53       142 		call	.SimeCounter
00F8 02 01 01       143 		br	.EndValCalc
00FB                144 .SD_DTmode:			
00FB 20 00 00       145 		call	SD_Prepare
00FE 20 00 00       146 		call	.I_trans_Z
+                   147 					
+                   148 ;---------------------------	
0101                149 .EndValCalc:	
0101 F5 00          150 		lda0	.DataDP
0103 A7 01          151 		cmpe	#01h
0105 07 01 16       152 		brnz	1$
0108 F3 02          153 		lda	#02h
010A FC 28          154 		sta	PP
010C F3 00          155 		lda	#0h
010E FC 21          156 		sta	DP
0110 F2             157 		lda	i
0111 A7 B6          158 		cmpe	#0b6h			;mcl
0113 06 01 19       159 		brz	.BaseN_Mode_Check
+                   160 1$:				
0116 20 00 00       161 		call	.Z_trans_I		;I=ANS
0119                162 .BaseN_Mode_Check:		
0119 F3 00          163 		lda	#>StateFlag
011B FC 28          164 		sta	PP
011D F1 00          165 		lda	StateFlag
011F CB 08          166 		anda	#08h		
0121 06 01 82       167 		brz	.ChkFormula		
0124 20 00 00       168 		call	.DelPoint
0127 20 00 00       169 		call	.Z_trans_X
012A 20 00 00       170 		call	.X_trans_Buf
012D F3 00          171 		lda	#>BasenFlag
012F FC 28          172 		sta	PP
0131 F1 00          173 		lda	BasenFlag
0133 CB F0          174 		anda	#0f0h
0135 A7 80          175 		cmpe	#80h		;DEC Mode
0137 06 01 79       176 		brz	.Dec2Dec
013A A7 40          177 		cmpe	#40h		;Hex Mode
013C 06 01 4C       178 		brz	.Dec2Hex
013F A7 20          179 		cmpe	#20h		;Bin Mode
0141 06 01 5B       180 		brz	.Dec2Bin
0144 A7 10          181 		cmpe	#10h
0146 06 01 6A       182 		brz	.Dec2Oct	;Oct Mode
0149 02 01 CD       183 		br	.EndPos
014C                184 .Dec2Hex::
+                   185 				
014C 20 00 00       186 		call	Base_Dec2Hex
014F 20 00 00       187 		call	.Z_trans_X
0152 20 00 00       188 		call	CheckHexLimit
0155 20 00 00       189 		call	.X_trans_Z		 
0158 02 01 CD       190 		br	.EndPos 	
015B                191 .Dec2Bin::
+                   192 		 	
015B 20 00 00       193 		call	Base_Dec2Bin
015E 20 00 00       194 		call	.Z_trans_X
0161 20 00 00       195 		call	CheckBinLimit
0164 20 00 00       196 		call	.X_trans_Z
0167 02 01 CD       197 		br	.EndPos 
016A                198 .Dec2Oct::
+                   199 		 	
016A 20 00 00       200 		call	Base_Dec2Oct
016D 20 00 00       201 		call	.Z_trans_X
0170 20 00 00       202 		call	CheckOctLimit
0173 20 00 00       203 		call	.X_trans_Z
0176 02 01 CD       204 		br	.EndPos 
0179                205 .Dec2Dec::
0179 20 00 00       206 		call	CheckDecLimit
017C 20 00 00       207 		call	.X_trans_Z
017F 02 01 CD       208 		br	.EndPos						
+                   209 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;		
0182                210 .ChkFormula:		
0182 F3 00          211 		lda	#>.SFlag
0184 FC 28          212 		sta	PP
0186 F1 00          213 		lda	.SFlag
0188 CB 80          214 		anda	#80h
018A 06 01 9B       215 		brz	.2$
018D F5 00          216 		lda0	.ForData
018F F9 00          217 		sta0	.KeyPos
0191 20 00 00       218 		call	.STOReg
0194 F3 00          219 		lda	#0h
0196 F9 00          220 		sta0	.StoFlag
0198 02 01 CD       221 		br	.NomalMode
019B                222 .2$:		
019B F5 00          223 		lda0	.FormulaFlag		;sto formula value
019D A7 01          224 		cmpe	#01h
019F 07 01 CD       225 		brnz	.NomalMode
01A2 F3 02          226 		lda	#02h
01A4 FC 28          227 		sta	PP
01A6 F3 00          228 		lda	#0h
01A8 FC 21          229 		sta	DP
01AA F2             230 		lda	i
01AB F9 00          231 		sta0	.KeyPos
01AD 20 00 00       232 		call	.STOReg
01B0 02 01 CD       233 		br	.EndPos
+                   234 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;		
01B3                235 .NoDataInp:			
01B3 F3 00          236 		lda	#>StateFlag
01B5 FC 28          237 		sta	PP
01B7 F1 00          238 		lda	StateFlag
01B9 CB 80          239 		anda	#80h		
01BB 06 01 CD       240 		brz	.EndPos
01BE F5 00          241 		lda0	.KeyPos
01C0 A7 DF          242 		cmpe	#0dfh
01C2 06 01 CA       243 		brz	.AnsToZ
01C5 A7 B5          244 		cmpe	#0b5h
01C7 07 01 CD       245 		brnz	.EndPos
01CA                246 .AnsToZ:		
01CA 20 00 00       247 		call	.I_trans_Z
01CD                248 .NomalMode:						
01CD                249 .EndPos:		
+                   250 				
01CD 24             251 		ret
+                   252 ;-------------------------------------------
01CE                253 .CalcVal:
+                   254 		
01CE F5 7B          255 		lda0	.PsValDP		
01D0 A7 F0          256 		cmpe	#0f0h
01D2 04 02 03       257 		brc	.CKY
01D5 F3 02          258 		lda	#02h
01D7 FC 28          259 		sta	PP
01D9 F5 7B          260 		lda0	.PsValDP
01DB FC 21          261 		sta	DP
01DD F2             262 		lda	i
01DE F9 01          263 		sta0	.DataBuf+1
01E0 F9 00          264 		sta0	.DataBuf
01E2 A7 B6          265 		cmpe	#0b6h
01E4 06 07 2D       266 		brz	.ClearrMem
01E7 F5 00          267 		lda0	.DataBuf		
01E9 A7 A0          268 		cmpe	#0a0h		
01EB 06 02 03       269 		brz	.CKY		
01EE 20 00 00       270 		call	.CheckPari
01F1 20 00 00       271 		call	.CheckMem
01F4 F5 00          272 		lda0	.AfterPari
01F6 A7 01          273 		cmpe	#01h
01F8 06 02 03       274 		brz	.CKY
01FB A7 02          275 		cmpe	#02h
01FD 06 02 03       276 		brz	.CKY
0200 02 07 BA       277 		br 	.EndCalcVal		 				
0203                278 .CKY:		
0203 F5 7C          279 		lda0	.IndexDP
0205 FC 21          280 		sta	DP
0207 F3 03          281 		lda	#03h
0209 FC 28          282 		sta	PP
020B 18             283 		incdp
020C F2             284 		lda	i		
020D F9 7B          285 		sta0	.PsValDP
020F A7 00          286 		cmpe	#0h
0211 06 02 E3       287 		brz	.StartCalcV			
0214 A7 F0          288 		cmpe	#0f0h
0216 04 02 59       289 		brc	.CKOP
0219 F3 02          290 		lda	#02h
021B FC 28          291 		sta	PP
021D F5 7B          292 		lda0	.PsValDP
021F FC 21          293 		sta	DP
0221 F2             294 		lda	i
0222 F9 01          295 		sta0	.DataBuf+1
0224 F9 00          296 		sta0	.DataBuf
0226 A7 B4          297 		cmpe	#0b4h
0228 06 02 E3       298 		brz	.StartCalcV	
022B A7 B0          299 		cmpe	#0b0h
022D 06 02 E3       300 		brz	.StartCalcV		
0230 A7 A0          301 		cmpe	#0a0h
0232 06 02 59       302 		brz	.CKOP			
0235 20 00 00       303 		call	.CheckPari
0238 20 00 00       304 		call	.CheckMem
023B F5 00          305 		lda0	.AfterPari
023D A7 01          306 		cmpe	#01h
023F 06 02 59       307 		brz	.CKOP
0242 A7 02          308 		cmpe	#02h
0244 06 02 59       309 		brz	.CKOP		 
0247 A7 06          310 		cmpe	#06h		;05h
0249 06 02 E3       311 		brz	.StartCalcV		
024C A7 0A          312 		cmpe	#0ah
024E 06 02 E3       313 		brz	.StartCalcV
0251 A7 0B          314 		cmpe	#0bh
0253 06 02 E3       315 		brz	.StartCalcV		
0256 02 07 BA       316 		br	.EndCalcVal					
0259                317 .CKOP:		
0259 F5 7C          318 		lda0	.IndexDP
025B FC 21          319 		sta	DP
025D F3 03          320 		lda	#03h
025F FC 28          321 		sta	PP
0261 18             322 		incdp
0262 18             323 		incdp
0263 F2             324 		lda	i
0264 F9 7B          325 		sta0	.PsValDP
0266 A7 00          326 		cmpe	#0h
0268 06 07 BA       327 		brz	.EndCalcVal				
026B A7 F0          328 		cmpe	#0f0h
026D 04 07 BA       329 		brc	.EndCalcVal
0270 F3 02          330 		lda	#02h
0272 FC 28          331 		sta	PP

⌨️ 快捷键说明

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