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

📄 oppotriangle_0225.asl

📁 这是用台湾KingB 8位单片机开发的科学计算器程序
💻 ASL
📖 第 1 页 / 共 5 页
字号:
+                  1175 ;------------------------------------------------------
0822               1176 .ResultAtan:	
+                  1177 		
0822 F1 D9         1178 		lda	.IdFlag
0824 A7 00         1179 		cmpe	#0h
0826 06 08 3B      1180 		brz	.ResultId0
0829 A7 01         1181 		cmpe	#1h
082B 06 08 4B      1182 		brz	.ResultId1
082E A7 02         1183 		cmpe	#2h
0830 06 08 5B      1184 		brz	.ResultId2
0833 A7 03         1185 		cmpe	#3h
0835 06 08 6B      1186 		brz	.ResultId3
0838 02 08 7B      1187 		br	.EndResultAtan
+                  1188 		
083B               1189 .ResultId0:
083B F3 00         1190 		lda	#Id0		
083D FD D8         1191 		sta	.M_Data_Offset		
083F 20 04 F4      1192 		call	.InpDataToT
0842 20 00 00      1193 		call	.Z_trans_X
0845 20 00 00      1194 		call	Addition	
0848 02 08 7B      1195 		br	.EndResultAtan
+                  1196 		
084B               1197 .ResultId1:		
084B F3 0A         1198 		lda	#Id1		
084D FD D8         1199 		sta	.M_Data_Offset		
084F 20 04 F4      1200 		call	.InpDataToT
0852 20 00 00      1201 		call	.Z_trans_X
0855 20 00 00      1202 		call	Addition	
0858 02 08 7B      1203 		br	.EndResultAtan
085B               1204 .ResultId2:		
085B F3 14         1205 		lda	#Id2		
085D FD D8         1206 		sta	.M_Data_Offset		
085F 20 04 F4      1207 		call	.InpDataToT
0862 20 00 00      1208 		call	.Z_trans_X
0865 20 00 00      1209 		call	Addition	
0868 02 08 7B      1210 		br	.EndResultAtan
086B               1211 .ResultId3:
086B F3 1E         1212 		lda	#Id3		
086D FD D8         1213 		sta	.M_Data_Offset		
086F 20 04 F4      1214 		call	.InpDataToT
0872 20 00 00      1215 		call	.Z_trans_X
0875 20 00 00      1216 		call	Addition	
0878 02 08 7B      1217 		br	.EndResultAtan
+                  1218 	
+                  1219 
087B               1220 .EndResultAtan:		
087B F1 DA         1221 		lda	.SignXBuf
087D A7 01         1222 		cmpe	#01h
087F 07 08 86      1223 		brnz	.EndSignAtan
0882 F3 01         1224 		lda	#01h
0884 FD 00         1225 		sta	SignZ
0886               1226 .EndSignAtan:		
0886 24            1227 		ret
+                  1228 ;Input:OperandX,OperandY (n,r)
+                  1229 ;Output:OperandZ
0887               1230 .NCR::
0887 F3 00         1231                         lda      #0
0889 FC 28         1232                         sta      PP
088B F3 00         1233    		        lda	 #0h
088D F9 07         1234 			sta0	 OperandX+7
088F 20 00 00      1235 			call	 .X_trans_Z
0892 20 00 00      1236 			call	 CheckOutData
0895 20 00 00      1237 			call	 .Z_trans_X						
0898 F3 00         1238 			lda	 #0h
089A F9 07         1239 			sta0	 OperandY+7
089C 20 00 00      1240 			call	 .Y_trans_Z
089F 20 00 00      1241 			call	 CheckOutData
08A2 20 00 00      1242 			call	 .Z_trans_Y						
08A5 F1 00         1243                         lda      SignX
08A7 DB 00         1244                         ora      #0
08A9 07 09 8A      1245                         brnz    ErrorExit 
08AC F1 00         1246                         lda     PointX
08AE A7 00         1247                         cmpe    #0
08B0 06 08 CF      1248                         brz     NCRStart
08B3 F1 00         1249                         lda     PointX
08B5 A7 88         1250                         cmpe    #88h
08B7 05 09 8A      1251                         brnc    ErrorExit   
08BA F1 00         1252                         lda     SignY
08BC DB 00         1253                         ora     #0
08BE 07 09 8A      1254                         brnz    ErrorExit   
08C1 F1 00         1255                         lda     PointY
08C3 A7 00         1256                         cmpe    #0
08C5 06 08 CF      1257                         brz     NCRStart
08C8 F1 00         1258                         lda     PointY
08CA A7 88         1259                         cmpe    #88h
08CC 05 09 8A      1260                         brnc    ErrorExit   
+                  1261  
08CF               1262 NCRStart:                        
08CF 20 00 00      1263                         call    .X_trans_S        ;n
08D2 20 00 00      1264                         Call    .Y_trans_R        ;r
08D5 20 00 00      1265                         call	LineUp	
08D8 F3 00         1266 		        lda	#OperandX
08DA FD 00         1267 		        sta	Addr1
08DC F3 00         1268 		        lda	#OperandY
08DE FD 00         1269 		        sta	Addr2		
08E0 F3 07         1270 		        lda	#.CmpLen		;06 2002.02.21
08E2 FD 00         1271 		        sta	DpCount
08E4 20 00 00      1272 		        call	CompareData
08E7 F1 00         1273 		        lda	Temp1
08E9 A7 02         1274 		        cmpe    #2               ;n<r
08EB 06 09 8A      1275 		        brz     ErrorExit
08EE A7 00         1276 		        cmpe    #0
08F0 07 08 FC      1277 		        brnz    0$
08F3 20 00 00      1278 		        call    .Put_1_to_OperandX                              
08F6 20 00 00      1279 		        call    .X_trans_Z          ; n==r
08F9 02 0A 10      1280 		        br      EndCombNr
+                  1281 0$:		        
+                  1282 		        ;call    .S_trans_X
+                  1283 		        ;call    .R_trans_Y       
08FC 20 00 00      1284 		        call    Subtration
08FF 20 00 00      1285 		        call    .Z_trans_X      ;n-r
0902 20 00 00      1286 		        call    .R_trans_Y      ;r
0905 20 00 00      1287 		        call	LineUp	
0908 F3 00         1288 		        lda	#OperandX
090A FD 00         1289 		        sta	Addr1
090C F3 00         1290 		        lda	#OperandY
090E FD 00         1291 		        sta	Addr2		
0910 F3 07         1292 		        lda	#.CmpLen		;06 2002.02.21
0912 FD 00         1293 		        sta	DpCount
0914 20 00 00      1294 		        call	CompareData
0917 F1 00         1295 		        lda     Temp1
0919 A7 02         1296 		        cmpe    #2
091B 07 09 21      1297 		        brnz    CheckCombN         ;n-r>=r
091E 20 00 00      1298 		        call    .Z_trans_R         ;n_r<r
0921               1299 CheckCombN:		        
0921 20 00 00      1300                         call    .S_trans_X 
0924 F3 00         1301                         lda     #COMBN20000
0926 F9 D8         1302 		        sta0    .M_Data_Offset
0928 20 0A 44      1303 		        call   .InpDataToOpY							
092B 20 00 00      1304 		        call	LineUp	
092E F3 00         1305 		        lda	#OperandX
0930 FD 00         1306 		        sta	Addr1
0932 F3 00         1307 		        lda	#OperandY
0934 FD 00         1308 		        sta	Addr2		
0936 F3 07         1309 		        lda	#.CmpLen		;06 2002.02.21
0938 FD 00         1310 		        sta	DpCount
093A 20 00 00      1311 		        call	CompareData
093D F1 00         1312 		        lda	Temp1
093F A7 02         1313 		        cmpe    #2
0941 06 09 67      1314 		        brz     CheckCombRLimit       ;n<20000
+                  1315 ;n>=20000
0944               1316 CheckCombR:		
0944 20 00 00      1317                         call    .R_trans_X  
0947 F3 0A         1318 		        lda     #COMBR24
0949 FD D8         1319 		        sta     .M_Data_Offset
094B 20 0A 44      1320 		        call    .InpDataToOpY							
094E 20 00 00      1321 		        call	LineUp	
0951 F3 00         1322 		        lda	#OperandX
0953 F9 00         1323 		        sta0	Addr1
0955 F3 00         1324 		        lda	#OperandY
0957 F9 00         1325 		        sta0	Addr2		
0959 F3 07         1326 		        lda	#.CmpLen		;06 2002.02.21
095B F9 00         1327 		        sta0	DpCount
095D 20 00 00      1328 		        call	CompareData
0960 F5 00         1329 		        lda0	Temp1
0962 A7 02         1330 		        cmpe    #2
0964 06 09 91      1331 		        brz     UsingNrLoop              ;r<24
0967               1332 CheckCombRLimit:		        
0967 20 00 00      1333                         call    .R_trans_X  
096A F3 14         1334 		        lda     #COMBR70
096C FD D8         1335 		        sta     .M_Data_Offset
096E 20 0A 44      1336 		        call    .InpDataToOpY							
0971 20 00 00      1337 		        call	LineUp	
0974 F3 00         1338 		        lda	#OperandX
0976 F9 00         1339 		        sta0	Addr1
0978 F3 00         1340 		        lda	#OperandY
097A F9 00         1341 		        sta0	Addr2		
097C F3 07         1342 		        lda	#.CmpLen			;06 2002.02.21
097E F9 00         1343 		        sta0	DpCount
0980 20 00 00      1344 		        call	CompareData
0983 F5 00         1345 		        lda0	Temp1
0985 A7 02         1346 		        cmpe    #2
0987 06 09 91      1347 		        brz     UsingNrLoop              ;r<70 
098A               1348 ErrorExit:
098A F3 01         1349 		        lda     #1
098C F9 00         1350 		        sta0    ErrorFlag     
098E 02 0A 10      1351 		        br      EndCombNr
+                  1352 ;(n<20000 or r <24 )
0991               1353 UsingNrLoop:		   
0991 F3 00         1354                         lda     #0
0993 F9 00         1355                         sta0    OpCnt
0995 20 00 00      1356                         call     .R_trans_X
0998 20 00 00      1357                         call     MoveData
099B 20 00 00      1358                         call     .X_trans_R          
099E F3 00         1359                         lda      #>(Operand_r+6)
09A0 FC 28         1360                         sta      PP
09A2 F1 06         1361                         lda      Operand_r+6
09A4 DB 00         1362                         ora      #0
09A6 07 09 B2      1363                         brnz      0$
09A9 20 00 00      1364                         call    .Put_1_to_OperandX                              
09AC 20 00 00      1365                         call    .X_trans_Z
09AF 02 0A 10      1366                         br       EndCombNr
+                  1367 0$:                        
09B2 F9 00         1368                         sta0     OutputTemp
09B4 F3 01         1369                         lda      #1
09B6 FC 28         1370                         sta      PP
09B8 F5 00         1371                         lda0     OutputTemp
09BA FD 00         1372                         sta     .M_bcdbuf
09BC 20 00 00      1373                         call    .bcdtohex
09BF F1 00         1374                         lda      .M_bcdbuf
09C1 F9 00         1375                         sta0     OpCntNo
09C3 F3 00         1376                         lda      #0
09C5 FC 28         1377                         sta      PP
09C7 20 00 00      1378                         call    .Put_1_to_OperandX                              
+                  1379 1$:                        
09CA 20 00 00      1380                         call    .S_trans_Y
09CD 20 00 00      1381                         call    Multiplation
09D0 F5 00         1382                         lda0     ErrorFlag
09D2 DB 00         1383                         ora      #0
09D4 07 0A 10      1384                         brnz     EndCombNr
09D7 20 00 00      1385                         call    .Z_trans_Buf     ;buf=n*x
09DA 20 00 00      1386                         call    .S_trans_X        
09DD 20 0A 3C      1387                         call    Put_1_to_OperandY
09E0 20 00 00      1388                         call    Subtration       ;n-1                        
09E3 20 00 00      1389                         call    .Z_Trans_S       ;n=n-1
09E6 20 00 00      1390                         call    .Buf_trans_X
09E9 F5 00         1391                         lda0     OpCnt
09EB 1F            1392                         inca
09EC F9 00         1393                         sta0     OpCnt
09EE A5 00         1394                         cmpe     OpCntNo
09F0 05 09 CA      1395                         brnc      1$ 
09F3 F5 00         1396                         lda0     ErrorFlag
09F5 DB 00         1397                         ora      #0
09F7 07 0A 10      1398                         brnz     EndCombNr
09FA 20 00 00      1399                         call    .R_trans_X
09FD F3 00         1400                         lda      #0        
09FF F9 07         1401                         sta0     OperandX+7
0A01 20 00 00      1402                         call    .Factorial         ; r!
0A04 20 00 00      1403                         call    .Z_trans_Y         
0A07 20 00 00      1404                         call    .Buf_trans_X
0A0A 20 00 00      1405                         call    Division           ;[n..(n-r+1)]/r!
0A0D 02 0A 10      1406                         br      EndCombNr
0A10               1407 EndCombNr:                
0A10 24            1408                         ret
+                  1409                         
+                  1410 ;Input:OperandX,OperandY 
+                  1411 ;Output:OperandZ                        
0A11               1412 .NPR:: 
0A11 20 00 00      1413                         call     .Y_trans_T
0A14 20 08 87      1414                         call      .NCR
0A17 20 00 00      1415                         call     .T_trans_X
0A1A 20 00 00      1416                         call     .Z_trans_B
0A1D F5 00         1417                         lda0      ErrorFlag
0A1F DB 00         1418                         ora       #0
0A21 07 0A 3B      1419                         brnz      0$
0A24 F3 00         1420                         lda      #0        
0A26 F9 07         1421                         sta0     OperandX+7
0A28 20 00 00      1422                         call     .Factorial 
0A2B F5 00         1423                         lda0      ErrorFlag
0A2D DB 00         1424                         ora       #0
0A2F 07 0A 3B      1425                         brnz      0$
0A32 20 00 00      1426                         call     .Z_trans_Y
0A35 20 00 00      1427                         call     .B_trans_X
0A38 20 00 00      1428                         call     Multiplation      ;c(n,r)*r!
+                  1429 0$:                        
0A3B 24            1430                         ret                                                
0A3C               1431 Put_1_to_OperandY::
0A3C 20 00 00      1432 			call	.ClrY
0A3F F3 01         1433 			lda	#01h
0A41 F9 06         1434 			sta0	OperandY+6			
0A43 24            1435 			ret	                        
+                  1436                         
+                  1437 ;;;
0A44               1438 .InpDataToOpY::	
+                  1439 		;lda	OP1
+                  1440 		;anda	#~10h
+                  1441 		;sta	OP1	
0A44 20 00 00      1442 		call	.ClrY 
0A47 F3 00         1443 		lda	#0h
0A49 FC 54         1444 		sta	TPP
0A4B F3 0B         1445 		lda	#@(FactConst)
0A4D FD 01         1446 		sta	TableC+1		
0A4F F3 6D         1447 		lda	#<(FactConst)						
0A51 89 D8         1448 		adda	.M_Data_Offset
0A53 FD 00         1449 		sta	TableC 			
0A55 F1 01         1450 		lda	TableC+1	
0A57 9B 00         1451 		addc    #0
0A59 FD 01         1452 		sta	TableC+1	
+                  1453 		
0A5B F3 00         1454 		lda	#0h
0A5D FC 54         1455 		sta	TPP
0A5F F1 01         1456 		lda	TableC+1	
0A61 FC 02         1457 		sta	TPH
0A63 F1 00         1458 		lda	TableC 
0A65 FC 01         1459 		sta	TPL		
0A67 F8            1460 		ldv
0A68 FD 00         1461 		sta	SignY
0A6A F8            1462 		ldv
0A6B FD 00         1463 		sta	PointY
0A6D F3 00         1464 		ld

⌨️ 快捷键说明

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