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

📄 base.asl

📁 这是用台湾KingB 8位单片机开发的科学计算器程序
💻 ASL
📖 第 1 页 / 共 4 页
字号:
038B 89 00          574 	   adda  BufLen
038D FC 21          575 	   sta   DP
038F F3 00          576 	   lda   #>.M_bcdbuf
0391 FC 28          577 	   sta   PP
0393 F5 06          578 	   lda0  OperandX+6
0395 FD 00          579 	   sta   .M_bcdbuf
0397 20 00 00       580 	   call  .bcdtohex
039A F1 00          581 	   lda   .M_bcdbuf
039C 7E             582 	   rolc
039D 7E             583 	   rolc
039E 7E             584 	   rolc
039F 7E             585 	   rolc
03A0 CB F0          586 	   anda  #0xf0
03A2 F9 00          587 	   sta0  Temp1
03A4 F3 00          588 	   lda   #0
03A6 FC 28          589 	   sta   PP
03A8 F5 00          590            lda0  Temp1	   
03AA DA             591 	   ora   I
03AB FE             592 	   sta   I        
03AC 24             593            ret 
+                   594            
+                   595 ;Input:OperandX
+                   596 ;Output:OperandX
+                   597 
+                   598 ;Input:BufferZ:Base digits
+                   599 ;Input:(BufferZ+1,BufferZ+2)=(base table address High byte,base table address low byte)                      
03AD                600 HBO2DecBase:
03AD F3 00          601            lda	 #OperandX
03AF F9 00          602  	   sta0	 Addr1
03B1 F3 00          603  	   lda	 #Buffer
03B3 F9 00          604  	   sta0	 Addr2
03B5 20 00 00       605  	   call	 CopyData    ; clear buffer to zero
03B8 F5 00          606  	   lda0	 PointX
03BA F9 00          607  	   sta0	 PointB
03BC F5 00          608  	   lda0  SignX
03BE F9 00          609  	   sta0	 SignB
03C0 20 00 00       610 	   call  .ClrY
03C3 20 00 00       611 	   call  .Y_trans_Buf
03C6 F3 06          612            lda   #6
03C8 F9 00          613 	   sta0  BufLen
03CA F3 00          614 	   lda   #0
03CC FD 00          615 	   sta   OpCntNo
+                   616 0$:	   
03CE F3 00          617            lda   #Buffer
03D0 89 00          618 	   adda  BufLen
03D2 FC 21          619 	   sta   DP
03D4 F5 00          620            lda0  OpCntNo
03D6 7F             621 	   rorc
03D7 04 03 E2       622 	   brc   1$
03DA F2             623 	   lda   I
03DB CB 0F          624 	   anda  #0x0f
03DD F9 00          625 	   sta0  Temp1
03DF 02 03 F2       626 	   br    2$
+                   627 1$:
03E2 F2             628            lda   I
03E3 CB F0          629 	   anda  #0xf0
03E5 7F             630 	   rorc
03E6 7F             631 	   rorc
03E7 7F             632 	   rorc
03E8 7F             633 	   rorc
03E9 CB 0F          634 	   anda  #0x0f
03EB F9 00          635 	   sta0  Temp1
03ED F5 00          636 	   lda0  BufLen
03EF 3F             637 	   deca
03F0 F9 00          638            sta0  BufLen   
+                   639 2$:	   
03F2 F5 00          640 	   lda0  OpCntNo
03F4 F9 00          641 	   sta0  .M_Data_Offset
03F6 1F             642 	   inca
03F7 F9 00          643 	   sta0  OpCntNo 
+                   644 	   
03F9 F3 00          645 	   lda   #>.M_hexbuf
03FB FC 28          646 	   sta   PP
03FD F3 00          647 	   lda   #0
03FF FD 00          648 	   sta   .M_hexbuf
0401 F5 00          649 	   lda0  Temp1
0403 FD 01          650 	   sta   .M_hexbuf+1
0405 20 00 00       651 	   call  .Hex2Bcd
0408 F1 01          652 	   lda   .M_bcdbuf+1
040A F9 00          653            sta0   Temp1       ;BCD value 	   
040C F3 00          654 	   lda    #0
040E FC 28          655 	   sta    PP
0410 F1 01          656 	   lda    BufferZ+1
0412 FD 00          657 	   sta    Addr1
0414 F1 02          658 	   lda    BufferZ+2
0416 FD 00          659 	   sta    Addr2
0418 20 05 32       660 	   call   InpDataToOpY
041B 20 00 00       661 	   call   .ClrX
041E F5 00          662 	   lda0   Temp1
0420 F9 06          663 	   sta0   OperandX+6
0422 20 00 00       664 	   call   Multiplation
0425 20 00 00       665 	   call   .Buf_trans_X
0428 20 00 00       666 	   call   .Z_trans_Y
042B 20 00 00       667 	   call   Addition
042E 20 00 00       668 	   call   .Z_trans_Buf
0431 F5 00          669 	   lda0   OpCntNo
0433 A5 00          670 	   cmpe   BufferZ
0435 07 03 CE       671 	   brnz   0$
0438 20 00 00       672            call   .Buf_trans_Z	     
043B F5 00          673            lda0   SignB
043D E9 00          674            xora   SignZ
043F F9 00          675            sta0   SignZ
0441 24             676            ret           
+                   677            
+                   678 ;Input:OperandX,Param+0(base=2,8,16),Param+1(Digits of output)
+                   679 ;Output:OperandZ                            
0442                680 Dec2HBOBase:
0442 20 00 00       681            call	 .ClrY
0445 F3 00          682            lda	 #OperandY
0447 F9 00          683  	   sta0	 Addr1
0449 F3 00          684  	   lda	 #Buffer
044B F9 00          685  	   sta0	 Addr2
044D 20 00 00       686  	   call	 CopyData    ; clear buffer to zero
0450 F3 00          687  	   lda	 #0
0452 F9 00          688  	   sta0	 PointB
0454 F5 00          689  	   lda0  SignX
0456 F9 00          690  	   sta0	 SignB
0458 F5 00          691 	   lda0	 Param+0
045A F9 06          692 	   sta0	 OperandY+6
045C F3 06          693 	   lda   #6
045E F9 00          694 	   sta0  BufLen
0460 F3 00          695 	   lda   #0
0462 FD 00          696 	   sta   OpCntNo
0464                697 ModLoop:	   
0464 20 00 00       698 	   call  Mod
0467 20 04 ED       699 	   call  MoveData
046A F5 00          700 	   lda0  OpCntNo
046C 7F             701 	   rorc
046D 04 04 76       702 	   brc   1$
0470 20 03 6C       703 	   call  FillInLowByte
0473 02 04 7E       704 	   br    2$
+                   705 1$:	   
0476 20 03 89       706            call  FillInHighByte 
0479 F1 00          707            lda   BufLen
047B 3F             708            deca
047C FD 00          709            sta   BufLen   
+                   710 ;;           
+                   711 2$:
047E F5 00          712            lda0  OpCntNo
0480 1F             713            inca
0481 F9 00          714            sta0  OpCntNo  
0483 20 00 00       715 	   call	 .ClrY
0486 F5 00          716 	   lda0	 Param+0          ;base=2,8,16
0488 F9 06          717 	   sta0	 OperandY+6
048A 20 00 00       718 	   call  .Z_trans_X
048D 20 00 00       719 	   call	 LineUp	
0490 F3 00          720            lda	 #OperandX
0492 FD 00          721 	   sta	 Addr1
0494 F3 00          722 	   lda	 #OperandY
0496 FD 00          723 	   sta	 Addr2		
0498 F3 07          724 	   lda	 #07h
049A FD 00          725 	   sta	 DpCount
049C 20 00 00       726 	   call	 CompareData
049F F1 00          727 	   lda   Temp1
04A1 A7 02          728 	   cmpe  #2
04A3 06 04 B3       729            brz   0$
04A6 20 00 00       730            call	 .ClrY
04A9 F5 00          731 	   lda0	 Param+0          ;base=2,8,16
04AB F9 06          732 	   sta0	 OperandY+6
04AD 20 00 00       733 	   call  .Z_trans_X
04B0 02 04 64       734            br    ModLoop
+                   735 0$:           
04B3 20 00 00       736            call  .Z_trans_X
04B6 20 04 ED       737            call  MoveData
04B9 F5 00          738 	   lda0  OpCntNo
04BB 7F             739 	   rorc
04BC 04 04 C5       740 	   brc   3$
04BF 20 03 6C       741 	   call  FillInLowByte
04C2 02 04 C8       742 	   br    4$
+                   743 3$:
04C5 20 03 89       744            call  FillInHighByte
+                   745 4$:	   
04C8 F5 00          746            lda0  OpCntNo
04CA 1F             747            inca
04CB F9 00          748            sta0  OpCntNo  
+                   749 	   
+                   750 ;           lda0  OpCntNo
04CD A5 01          751            cmpe  Param+1                  ;base=2,8(10+1),16(8+1)
04CF 05 04 D9       752            brnc  5$
04D2 F3 01          753            lda   #1
04D4 F9 00          754            sta0  ErrorFlag
04D6 02 04 EC       755            br    EndDec2HBO
+                   756 5$:            
04D9 F3 00          757            lda	 #Buffer
04DB F9 00          758  	   sta0	 Addr1
04DD F3 00          759  	   lda	 #OperandZ
04DF F9 00          760  	   sta0	 Addr2
04E1 20 00 00       761  	   call	 CopyData
04E4 F5 00          762  	   lda0  SignB
04E6 F9 00          763  	   sta0  SignZ
04E8 F5 00          764  	   lda0  OpCntNo
04EA F9 00          765  	   sta0  PointZ
04EC                766 EndDec2HBO: 	   
04EC 24             767            ret
+                   768            
04ED                769 MoveData::    
04ED F3 00          770            lda     #OperandX
04EF FD 00          771            sta     Addr1
04F1 20 00 00       772            call    CheckData
04F4 F1 00          773            lda     DpCount
04F6 8B 00          774            adda    #0
04F8 06 05 31       775            brz     0$
+                   776 2$:           
04FB F5 00          777            lda0	  PointX
04FD A7 00          778            cmpe   #0
04FF 06 05 31       779            brz    0$
0502 A7 88          780            cmpe   #88h
0504 04 05 14       781            brc    1$
0507 3F             782 	   deca
0508 F9 00          783 	   sta0	 PointX
050A F3 00          784            lda	 #OperandX
050C F9 00          785 	   sta0	 Addr1
050E 20 00 00       786 	   call	 ShiftToR
0511 02 04 FB       787 	   br    2$
+                   788 1$:	
0514 F5 00          789            lda0	  PointX
0516 A7 00          790            cmpe   #0
0518 06 05 31       791            brz    0$
051B F1 00          792            lda   OperandX
051D CB F0          793            anda  #0f0h
051F 07 05 31       794            brnz   0$
0522 F5 00          795            lda0  PointX
0524 1F             796            inca
0525 F9 00          797            sta0	 PointX
0527 F3 00          798            lda	 #OperandX
0529 F9 00          799 	   sta0	 Addr1
052B 20 00 00       800 	   call	 ShiftToL
052E 02 05 14       801 	   br    1$
+                   802 0$:	   
0531 24             803            ret
+                   804            
+                   805            
+                   806 ;Input:Table address (Addr1=High,Addr2=Low)
+                   807 ;Input:Data Offset                
0532                808 InpDataToOpY::	
+                   809 		;lda	OP1
+                   810 		;anda	#~10h
+                   811 		;sta	OP1	 
0532 20 00 00       812 		call	.ClrY 
0535 F3 00          813 		lda	#0h
0537 FC 54          814 		sta	TPP
0539 F1 00          815 		lda	Addr1
053B FD 01          816 		sta	TableC+1		
053D F1 00          817 		lda	.M_Data_Offset
053F 89 00          818 		adda	.M_Data_Offset
0541 FD 00          819 		sta     Addr3
0543 89 00          820 		adda	Addr3
0545 89 00          821 		adda	Addr3
0547 89 00          822 		adda	Addr3
0549 89 00          823                	adda	Addr3	
054B 89 00          824 		adda    Addr2
054D FD 00          825 		sta	TableC 			
054F F1 01          826 		lda	TableC+1	
0551 9B 00          827 		addc    #0
0553 FD 01          828 		sta	TableC+1	
+                   829 		
0555 F3 00          830 		lda	#0h
0557 FC 54          831 		sta	TPP
0559 F1 01          832 		lda	TableC+1	
055B FC 02          833 		sta	TPH
055D F1 00          834 		lda	TableC 
055F FC 01          835 		sta	TPL		
0561 F8             836 		ldv
0562 FD 00          837 		sta	SignY
0564 F8             838 		ldv
0565 FD 00          839 		sta	PointY
0567 F3 00          840 		lda	#OperandY
0569 FC 21          841 		sta	DP	 	
056B                842 InpY0:					
056B F8             843 		ldv		
056C A7 FF          844 		cmpe	#0ffh
056E 06 05 76       845 		brz	End_InpY0
0571 FE             846 		sta	i		
0572 18             847 		incdp		
0573 02 05 6B       848 		br	InpY0
+                   849 		
0576                850 End_InpY0:
+                   851 		;lda	OP1 
+                   852 		;ora	#10h
+                   853 		;sta	OP1
0576 24             854 		ret
+                   855 		
+                   856 ;		
+                   857 ;InputOperandX,OperandY
+                   858 ;Input:MathOp (and:1,or:2,xor:3,xnor:4)
+                   859 ;Output:OperandZ           
0577                860 LogicMathOp:

⌨️ 快捷键说明

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