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

📄 base.asl

📁 这是用台湾KingB 8位单片机开发的科学计算器程序
💻 ASL
📖 第 1 页 / 共 4 页
字号:
0008                  1 HEX_DIGITS  equ  8
000A                  2 BIN_DIGITS  equ  10
000A                  3 OCT_DIGITS  equ  10
+                     4                  
+                     5 
+                     6                  .area base_code(code,rel)                                              
+                     7 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+                     8 ; 
+                     9 ;         Public functions
+                    10 ;
+                    11 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;                 
+                    12                 
+                    13 ;Base-10 -> Base-2 
+                    14 ;Input:OperandX   (Dec)        
+                    15 ;Output:OperandZ  (Bin)
+B 00 01
0000                 16 Base_Dec2Bin::
0000 F5 00           17            lda0  SignX
0002 F9 00           18            sta0  SignTmp
0004 DB 00           19            ora   #0
0006 06 00 56        20            brz   1$
0009 F3 00           21            lda   #0
000B F9 00           22            sta0  SignX
000D 20 00 00        23            call  .X_trans_R
0010 20 00 00        24            call	 .ClrY
0013 F3 05           25            lda	 #05h
0015 F9 05           26 	   sta0	 OperandY+5
0017 F3 13           27 	   lda	 #13h
0019 F9 06           28 	   sta0	 OperandY+6
001B 20 00 00        29 	   call	 LineUp	
001E F3 00           30            lda	 #OperandX
0020 FD 00           31 	   sta	 Addr1
0022 F3 00           32 	   lda	 #OperandY
0024 FD 00           33 	   sta	 Addr2		
0026 F3 07           34 	   lda	 #07h
0028 FD 00           35 	   sta	 DpCount
002A 20 00 00        36 	   call	 CompareData
002D F1 00           37 	   lda   Temp1
002F A7 02           38 	   cmpe  #2
0031 06 00 3B        39            brz   0$
0034 F3 01           40            lda   #1
0036 F9 00           41            sta0  ErrorFlag
0038 02 00 8A        42            br    3$
+                    43 ;OperandX<0           
+                    44 0$:       
003B 20 00 00        45            call  .R_trans_X
003E F5 00           46            lda0  SignTmp
0040 F9 00           47            sta0  SignX
0042 20 00 00        48            call	 .ClrY
0045 F3 10           49            lda	 #10h
0047 F9 05           50 	   sta0	 OperandY+5
0049 F3 24           51 	   lda	 #24h
004B F9 06           52 	   sta0	 OperandY+6
004D 20 00 00        53 	   call  Addition
0050 20 00 00        54 	   call  .Z_trans_X
0053 02 00 87        55 	   br    2$
+                    56 1$:	   
0056 20 00 00        57            call  .X_trans_R
0059 20 00 00        58            call	 .ClrY
005C F3 05           59            lda	 #05h
005E F9 05           60 	   sta0	 OperandY+5
0060 F3 12           61 	   lda	 #12h
0062 F9 06           62 	   sta0	 OperandY+6
0064 20 00 00        63 	   call	 LineUp	
0067 F3 00           64            lda	 #OperandX
0069 FD 00           65 	   sta	 Addr1
006B F3 00           66 	   lda	 #OperandY
006D FD 00           67 	   sta	 Addr2		
006F F3 07           68 	   lda	 #07h
0071 FD 00           69 	   sta	 DpCount
0073 20 00 00        70 	   call	 CompareData
0076 F1 00           71 	   lda   Temp1
0078 A7 02           72 	   cmpe  #2
007A 06 00 84        73            brz   22$
007D F3 01           74            lda   #1
007F F9 00           75            sta0  ErrorFlag
0081 02 00 8A        76            br    3$
+                    77 22$:           
0084 20 00 00        78            call  .R_trans_X
+                    79 2$:           
0087 20 03 48        80            call  Dec2Bin
+                    81 3$:           
008A 24              82            ret           
+                    83            
+                    84 ;Base-10 -> Base-8    
+                    85 ;Input:OperandX   (Dec)        
+                    86 ;Output:OperandZ  (Oct)
008B                 87 Base_Dec2Oct::
008B F5 00           88            lda0  SignX
008D F9 00           89            sta0  SignTmp
008F DB 00           90            ora   #0
0091 06 00 F6        91            brz   1$
0094 F3 00           92            lda   #0
0096 F9 00           93            sta0  SignX
0098 20 00 00        94            call  .X_trans_R
009B 20 00 00        95            call	 .ClrY
009E F3 05           96            lda	 #05h
00A0 F9 02           97 	   sta0	 OperandY+2
00A2 F3 36           98            lda	 #36h
00A4 F9 03           99 	   sta0	 OperandY+3
00A6 F3 87          100            lda	 #87h
00A8 F9 04          101 	   sta0	 OperandY+4
00AA F3 09          102 	   lda	 #09h
00AC F9 05          103 	   sta0	 OperandY+5
00AE F3 13          104 	   lda	 #13h
00B0 F9 06          105 	   sta0	 OperandY+6
00B2 20 00 00       106 	   call	 LineUp	
00B5 F3 00          107            lda	 #OperandX
00B7 FD 00          108 	   sta	 Addr1
00B9 F3 00          109 	   lda	 #OperandY
00BB FD 00          110 	   sta	 Addr2		
00BD F3 07          111 	   lda	 #07h
00BF FD 00          112 	   sta	 DpCount
00C1 20 00 00       113 	   call	 CompareData
00C4 F1 00          114 	   lda   Temp1
00C6 A7 02          115 	   cmpe  #2
00C8 06 00 D2       116            brz   0$
00CB F3 01          117            lda   #1
00CD F9 00          118            sta0  ErrorFlag
00CF 02 00 F9       119            br    2$
+                   120 ;OperandX<0           
+                   121 0$:       
00D2 20 00 00       122            call  .R_trans_X
00D5 F5 00          123            lda0  SignTmp
00D7 F9 00          124            sta0  SignX
00D9 20 00 00       125            call	 .ClrY
00DC F3 10          126            lda	 #10h
00DE F9 02          127 	   sta0	 OperandY+2
00E0 F3 73          128            lda	 #73h
00E2 F9 03          129 	   sta0	 OperandY+3
00E4 F3 74          130            lda	 #74h
00E6 F9 04          131 	   sta0	 OperandY+4
00E8 F3 18          132 	   lda	 #18h
00EA F9 05          133 	   sta0	 OperandY+5
00EC F3 24          134 	   lda	 #24h
00EE F9 06          135 	   sta0	 OperandY+6
00F0 20 00 00       136            call  Addition
00F3 20 00 00       137 	   call  .Z_trans_X
+                   138 1$:	   
00F6 20 03 60       139            call  Dec2Oct
+                   140 2$:           
00F9 24             141            ret
+                   142            
+                   143 ;Base-10 -> Base-16           
+                   144 ;Input:OperandX   (Dec)        
+                   145 ;Output:OperandZ  (Hex)
00FA                146 Base_Dec2Hex::
00FA F5 00          147            lda0  SignX
00FC F9 00          148            sta0  SignTmp
00FE 20 02 42       149            call  CheckDecLimit
0101 F5 00          150            lda0  ErrorFlag
0103 A7 01          151            cmpe  #1
0105 04 01 33       152            brc   2$
0108 F5 00          153            lda0  SignTmp
010A DB 00          154            ora   #0
010C 06 01 30       155            brz   1$
+                   156 ;OperandX<0           
+                   157 0$:       
010F F5 00          158            lda0  SignTmp
0111 F9 00          159            sta0  SignX
0113 20 00 00       160            call	 .ClrY
0116 F3 42          161            lda	 #42h
0118 F9 02          162 	   sta0	 OperandY+2
011A F3 94          163            lda	 #94h
011C F9 03          164 	   sta0	 OperandY+3
011E F3 96          165            lda	 #96h
0120 F9 04          166 	   sta0	 OperandY+4
0122 F3 72          167 	   lda	 #72h
0124 F9 05          168 	   sta0	 OperandY+5
0126 F3 96          169 	   lda	 #96h
0128 F9 06          170 	   sta0	 OperandY+6
012A 20 00 00       171 	   call  Addition
012D 20 00 00       172 	   call  .Z_trans_X
+                   173 1$:	   
0130 20 03 54       174            call  Dec2Hex
+                   175 2$:           
0133 24             176            ret           
+                   177            
+                   178 ;Input:OperandX   (Hex)        
+                   179 ;Output:OperandZ  (Bin)
0134                180 Base_Hex2Bin::
0134 20 01 48       181            call  Base_Hex2Dec
0137 20 00 00       182            call  .Z_trans_X
013A 20 00 00       183            call  Base_Dec2Bin
013D 24             184            ret           
+                   185            
+                   186 ;Input:OperandX   (Hex)        
+                   187 ;Output:OperandZ  (Oct)
013E                188 Base_Hex2Oct::
013E 20 01 48       189            call  Base_Hex2Dec
0141 20 00 00       190            call  .Z_trans_X
0144 20 00 8B       191            call  Base_Dec2Oct
0147 24             192            ret           
+                   193            
+                   194 ;Input:OperandX    (Hex)       
+                   195 ;Output:OperandZ   (Dec)
0148                196 Base_Hex2Dec::
0148 F3 00          197            lda    #0
014A FC 28          198 	   sta    PP
014C 20 02 CE       199            call   CheckHexLimit
014F F5 00          200            lda0   ErrorFlag
0151 A7 01          201            cmpe   #1
0153 04 01 91       202            brc    3$
0156 F3 08          203            lda    #HEX_DIGITS
0158 F9 00          204            sta0   BufferZ
015A F3 06          205 	   lda    #@Hex2DecTab
015C FD 01          206 	   sta    BufferZ+1
015E F3 DD          207 	   lda    #<Hex2DecTab
0160 FD 02          208 	   sta    BufferZ+2
0162 20 03 AD       209 	   call   HBO2DecBase
0165 F5 03          210 	   lda0   Buffer+3
0167 CB F0          211 	   anda   #0xf0
0169 7F             212 	   rorc
016A 7F             213 	   rorc
016B 7F             214 	   rorc
016C 7F             215 	   rorc
016D CB 0F          216 	   anda   #0x0f
016F A7 08          217 	   cmpe   #8
0171 05 01 91       218 	   brnc   3$
0174 20 00 00       219 	   call  .Z_trans_X
0177 20 00 00       220 	   call	 .ClrY
017A F3 42          221            lda	 #42h
017C F9 02          222 	   sta0	 OperandY+2
017E F3 94          223            lda	 #94h
0180 F9 03          224 	   sta0	 OperandY+3
0182 F3 96          225            lda	 #96h
0184 F9 04          226 	   sta0	 OperandY+4
0186 F3 72          227 	   lda	 #72h
0188 F9 05          228 	   sta0	 OperandY+5
018A F3 96          229 	   lda	 #96h
018C F9 06          230 	   sta0	 OperandY+6
018E 20 00 00       231 	   call  Subtration
+                   232 3$:        
0191 24             233            ret
+                   234            
+                   235 ;Input:OperandX    (Bin)       
+                   236 ;Output:OperandZ   (Oct)
0192                237 Base_Bin2Oct::
0192 20 01 A6       238            call  Base_Bin2Dec
0195 20 00 00       239            call  .Z_trans_X
0198 20 00 8B       240            call  Base_Dec2Oct
019B 24             241            ret           
+                   242 
+                   243 ;Input:OperandX  (Bin)         
+                   244 ;Output:OperandZ (Hex)
019C                245 Base_Bin2Hex::
019C 20 01 A6       246            call  Base_Bin2Dec
019F 20 00 00       247            call  .Z_trans_X
01A2 20 00 FA       248            call  Base_Dec2Hex
01A5 24             249            ret           
+                   250            
+                   251 ;Input:OperandX   (Bin)        
+                   252 ;Output:OperandZ  (Decimal)
01A6                253 Base_Bin2Dec::
01A6 F3 00          254            lda    #0
01A8 FC 28          255 	   sta    PP
01AA 20 02 DA       256            call   CheckBinLimit
01AD F5 00          257            lda0   ErrorFlag
01AF A7 01          258            cmpe   #1
01B1 04 01 E3       259            brc    3$
01B4 F3 0A          260            lda    #BIN_DIGITS
01B6 F9 00          261            sta0   BufferZ
01B8 F3 06          262 	   lda    #@Bin2DecTab
01BA FD 01          263 	   sta    BufferZ+1
01BC F3 15          264 	   lda    #<Bin2DecTab
01BE FD 02          265 	   sta    BufferZ+2
01C0 20 03 AD       266 	   call   HBO2DecBase
01C3 F5 02          267 	   lda0   Buffer+2
01C5 CB F0          268 	   anda   #0xf0
01C7 7F             269 	   rorc
01C8 7F             270 	   rorc
01C9 7F             271 	   rorc
01CA 7F             272 	   rorc
01CB CB 0F          273 	   anda   #0x0f
01CD A7 01          274 	   cmpe   #1
01CF 05 01 E3       275 	   brnc   3$
01D2 20 00 00       276 	   call  .Z_trans_X
01D5 20 00 00       277 	   call	 .ClrY
01D8 F3 10          278            lda	 #10h
01DA F9 05          279 	   sta0	 OperandY+5
01DC F3 24          280 	   lda	 #24h
01DE F9 06          281 	   sta0	 OperandY+6
01E0 20 00 00       282 	   call  Subtration
+                   283 3$:        
01E3 24             284            ret
+                   285 
+                   286 ;Input:OperandX  (Oct)         

⌨️ 快捷键说明

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