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

📄 base.asl

📁 这是用台湾KingB 8位单片机开发的科学计算器程序
💻 ASL
📖 第 1 页 / 共 4 页
字号:
+                   287 ;Output:OperandZ (Bin)
01E4                288 Base_Oct2Bin::
01E4 20 01 F8       289            call  Base_Oct2Dec
01E7 20 00 00       290            call  .Z_trans_X
01EA 20 00 00       291            call  Base_Dec2Bin
01ED 24             292            ret           
+                   293            
+                   294 ;Input:OperandX (Oct)          
+                   295 ;Output:OperandZ (Hex)
01EE                296 Base_Oct2Hex::
01EE 20 01 F8       297            call  Base_Oct2Dec
01F1 20 00 00       298            call  .Z_trans_X
01F4 20 00 FA       299            call  Base_Dec2Hex
01F7 24             300            ret           
+                   301            
+                   302            
+                   303 ;Input:OperandX  (Oct)         
+                   304 ;Output:OperandZ (decimal)
01F8                305 Base_Oct2Dec::
01F8 F3 00          306            lda    #0
01FA FC 28          307 	   sta    PP
01FC 20 02 C2       308            call   CheckOctLimit
01FF F5 00          309            lda0   ErrorFlag
0201 A7 01          310            cmpe   #1
0203 04 02 41       311            brc    3$
0206 F3 0A          312            lda    #OCT_DIGITS
0208 F9 00          313            sta0   BufferZ
020A F3 06          314 	   lda    #@Oct2DecTab
020C FD 01          315 	   sta    BufferZ+1
020E F3 79          316 	   lda    #<Oct2DecTab
0210 FD 02          317 	   sta    BufferZ+2
0212 20 03 AD       318 	   call   HBO2DecBase
0215 F5 02          319 	   lda0   Buffer+2
0217 CB F0          320 	   anda   #0xf0
0219 7F             321 	   rorc
021A 7F             322 	   rorc
021B 7F             323 	   rorc
021C 7F             324 	   rorc
021D CB 0F          325 	   anda   #0x0f
021F A7 04          326 	   cmpe   #4
0221 05 02 41       327 	   brnc   3$
0224 20 00 00       328 	   call  .Z_trans_X
0227 20 00 00       329 	   call	 .ClrY
022A F3 10          330            lda	 #10h
022C F9 02          331 	   sta0	 OperandY+2
022E F3 73          332            lda	 #73h
0230 F9 03          333 	   sta0	 OperandY+3
0232 F3 74          334            lda	 #74h
0234 F9 04          335 	   sta0	 OperandY+4
0236 F3 18          336 	   lda	 #18h
0238 F9 05          337 	   sta0	 OperandY+5
023A F3 24          338 	   lda	 #24h
023C F9 06          339 	   sta0	 OperandY+6
023E 20 00 00       340 	   call  Subtration
+                   341 	   
+                   342 3$:        
0241 24             343            ret           
+                   344 
+                   345            
+                   346 ;;Input:OperandX  (decimal)         
+                   347 ;Output:ErrorFlag
0242                348 CheckDecLimit::
0242 20 00 00       349            call  .X_trans_R
0245 F5 00          350            lda0  SignX
0247 DB 00          351            ora   #0
0249 06 02 87       352            brz   0$
024C F3 00          353            lda   #0
024E F9 00          354            sta0  SignX
0250 20 00 00       355            call	 .ClrY
0253 F3 21          356            lda	 #21h
0255 F9 02          357 	   sta0	 OperandY+2
0257 F3 47          358            lda	 #47h
0259 F9 03          359 	   sta0	 OperandY+3
025B F3 48          360            lda	 #48h
025D F9 04          361 	   sta0	 OperandY+4
025F F3 36          362            lda	 #36h
0261 F9 05          363 	   sta0	 OperandY+5
0263 F3 49          364 	   lda	 #49h
0265 F9 06          365 	   sta0	 OperandY+6
+                   366 	   
0267 20 00 00       367            call	 LineUp	
026A F3 00          368            lda	 #OperandX
026C FD 00          369 	   sta	 Addr1
026E F3 00          370 	   lda	 #OperandY
0270 FD 00          371 	   sta	 Addr2		
0272 F3 07          372 	   lda	 #07h
0274 FD 00          373 	   sta	 DpCount
0276 20 00 00       374 	   call	 CompareData
0279 F1 00          375 	   lda   Temp1
027B A7 02          376 	   cmpe  #2
027D 06 02 BE       377            brz   1$
0280 F3 01          378            lda   #1
0282 F9 00          379            sta0  ErrorFlag
0284 02 02 C1       380            br    2$
+                   381 0$:           
0287 20 00 00       382            call	 .ClrY
028A F3 21          383            lda	 #21h
028C F9 02          384 	   sta0	 OperandY+2
028E F3 47          385            lda	 #47h
0290 F9 03          386 	   sta0	 OperandY+3
0292 F3 48          387            lda	 #48h
0294 F9 04          388 	   sta0	 OperandY+4
0296 F3 36          389            lda	 #36h
0298 F9 05          390 	   sta0	 OperandY+5
029A F3 48          391 	   lda	 #48h
029C F9 06          392 	   sta0	 OperandY+6
+                   393 	   
029E 20 00 00       394            call	 LineUp	
02A1 F3 00          395            lda	 #OperandX
02A3 FD 00          396 	   sta	 Addr1
02A5 F3 00          397 	   lda	 #OperandY
02A7 FD 00          398 	   sta	 Addr2		
02A9 F3 07          399 	   lda	 #07h
02AB FD 00          400 	   sta	 DpCount
02AD 20 00 00       401 	   call	 CompareData
02B0 F1 00          402 	   lda   Temp1
02B2 A7 02          403 	   cmpe  #2
02B4 06 02 BE       404            brz   1$
02B7 F3 01          405            lda   #1
02B9 FD 00          406            sta   ErrorFlag
02BB 02 02 C1       407            br    2$
+                   408 1$:
02BE 20 00 00       409            call  .R_trans_X
+                   410 2$:
02C1 24             411            ret
+                   412            
+                   413 ;;Input:OperandX (Oct)          
+                   414 ;Output:ErrorFlag
02C2                415 CheckOctLimit::
02C2 F5 00          416            lda0  PointX
02C4 A7 0B          417            cmpe  #(OCT_DIGITS+1)
02C6 05 02 CD       418            brnc  0$
02C9 F3 01          419            lda   #1
02CB F9 00          420            sta0  ErrorFlag
+                   421 0$:                      
02CD 24             422            ret
+                   423            
+                   424 ;;Input:OperandX (Hex)          
+                   425 ;Output:ErrorFlag
02CE                426 CheckHexLimit::
02CE F5 00          427            lda0  PointX
02D0 A7 09          428            cmpe  #(HEX_DIGITS+1)
02D2 05 02 D9       429            brnc  0$
02D5 F3 01          430            lda   #1
02D7 F9 00          431            sta0  ErrorFlag
+                   432 0$:                      
02D9 24             433            ret     
+                   434                             
+                   435 ;;Input:OperandX (Binary)          
+                   436 ;Output:ErrorFlag
02DA                437 CheckBinLimit::
02DA F5 00          438            lda0  PointX
+                   439            ;cmpe  #(BIN_DIGITS+1)
02DC A7 0B          440            cmpe  #(BIN_DIGITS+1)
02DE 05 02 E5       441            brnc  0$
02E1 F3 01          442            lda   #1
02E3 F9 00          443            sta0  ErrorFlag
+                   444 0$:                      
02E5 24             445            ret  
+                   446               
+                   447 ;InputOperandX,OperandY (decimal)
+                   448 ;Input:MathOp=1 (decimal)
+                   449 ;Output:OperandZ  (decimal)         
02E6                450 LogicAnd::    
02E6 F3 01          451            lda   #1
02E8 F9 00          452            sta0  MathOp
02EA 20 05 77       453            call  LogicMathOp
02ED 24             454            ret
+                   455             
+                   456             
+                   457 ;InputOperandX,OperandY (decimal)
+                   458 ;Input:MathOp=2 (decimal)
+                   459 ;Output:OperandZ (decimal)          
02EE                460 LogicOr::
02EE F3 02          461            lda   #2
02F0 F9 00          462            sta0  MathOp
02F2 20 05 77       463            call  LogicMathOp
02F5 24             464            ret           
+                   465 
+                   466 ;InputOperandX,OperandY (decimal)
+                   467 ;Input:MathOp=3 (decimal)
+                   468 ;Output:OperandZ  (decimal)         
02F6                469 LogicXor::
02F6 F3 03          470            lda   #3
02F8 F9 00          471            sta0  MathOp
02FA 20 05 77       472            call  LogicMathOp
02FD 24             473            ret           
+                   474            
+                   475 ;InputOperandX,OperandY (decimal)
+                   476 ;Input:MathOp=4 (decimal)
+                   477 ;Output:OperandZ  (decimal)         
02FE                478 LogicXnor::        
02FE F3 04          479            lda   #4
0300 F9 00          480            sta0  MathOp
0302 20 05 77       481            call  LogicMathOp   
0305 24             482            ret
+                   483             
+                   484 ;InputOperandX (decimal)
+                   485 ;Output:OperandZ (decimal)          
0306                486 LogicNeg::
0306 20 00 00       487            call   .X_trans_Buf
0309 20 02 42       488            call   CheckDecLimit
030C F5 00          489            lda0   ErrorFlag
030E A7 01          490            cmpe   #1
0310 04 03 1F       491            brc    2$
0313 20 00 00       492            call   .Buf_trans_X
0316 F5 00          493            lda0   SignX
0318 EB 01          494            xora   #01
031A F9 00          495            sta0   SignX
031C 20 00 00       496            call   .X_trans_Z                
+                   497 2$:           
031F 24             498            ret
+                   499            
+                   500 ;InputOperandX (decimal)
+                   501 ;Output:OperandZ (decimal)          
0320                502 LogicNot::
0320 20 00 FA       503            call  Base_Dec2Hex
0323 F5 00          504            lda0  ErrorFlag
0325 A7 01          505            cmpe  #1
0327 04 03 41       506            brc   1$
032A F3 00          507            lda   #0
032C F9 00          508            sta0  OpCntNo
032E F3 06          509            lda   #OperandZ+6
0330 FC 21          510            sta   DP
+                   511 0$:           
0332 F2             512            lda   I
0333 EB FF          513            xora  #0xff
0335 FE             514            sta   I
0336 38             515            decdp
0337 F5 00          516            lda0  OpCntNo
0339 1F             517            inca
033A F9 00          518            sta0  OpCntNo
033C A7 04          519            cmpe  #4
033E 07 03 32       520            brnz  0$  
+                   521 1$:           
0341 20 00 00       522            call  .Z_trans_X
0344 20 01 48       523            call  Base_Hex2Dec
0347 24             524            ret                      
+                   525 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+                   526 ; 
+                   527 ;         Private functions
+                   528 ;
+                   529 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;                 
+                   530 ;Input:OperandX
+                   531 ;Output:OperandZ                 
0348                532 Dec2Bin:
0348 F3 02          533            lda   #02h
034A F9 00          534            sta0  Param+0
034C F3 0B          535            lda   #11
034E F9 01          536            sta0  Param+1           
0350 20 04 42       537            call  Dec2HBOBase
0353 24             538            ret
+                   539            
0354                540 Dec2Hex:
0354 F3 16          541            lda   #16h
0356 F9 00          542            sta0  Param+0
0358 F3 09          543            lda   #9
035A F9 01          544            sta0  Param+1           
035C 20 04 42       545            call  Dec2HBOBase
035F 24             546            ret
+                   547            
0360                548 Dec2Oct:
0360 F3 08          549            lda   #08h
0362 F9 00          550            sta0  Param+0
0364 F3 0B          551            lda   #11
0366 F9 01          552            sta0  Param+1           
0368 20 04 42       553            call  Dec2HBOBase
036B 24             554            ret           
+                   555            
036C                556 FillInLowByte:
036C F3 00          557            lda   #Buffer
036E 89 00          558 	   adda  BufLen
0370 FC 21          559 	   sta   DP
0372 F3 00          560 	   lda   #>.M_bcdbuf
0374 FC 28          561 	   sta   PP
0376 F5 06          562 	   lda0  OperandX+6
0378 FD 00          563 	   sta   .M_bcdbuf
037A 20 00 00       564 	   call  .bcdtohex
037D F1 00          565 	   lda   .M_bcdbuf
037F F9 00          566 	   sta0  Temp1
0381 F3 00          567 	   lda   #0
0383 FC 28          568 	   sta   PP
0385 F1 00          569 	   lda   Temp1
0387 FE             570 	   sta   I
0388 24             571            ret           
0389                572 FillInHighByte:
0389 F3 00          573            lda   #Buffer

⌨️ 快捷键说明

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