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

📄 sat.asm

📁 这是用台湾KingB 8位单片机开发的科学计算器程序
💻 ASM
📖 第 1 页 / 共 5 页
字号:
                        ret                 
Z_Trans_YSquDiff:
                        lda    #>SignZ
                        sta0   .PXPP                
                        lda    #<SignZ
                        sta0   .PXDP  
                        lda    #>SignYSquDiff
                        sta0    .PYPP
                        lda    #<SignYSquDiff
                        sta0   .PYDP
                        call   .CopyData           
                        ret                        
XFourSum_Trans_X:          
                        lda    #>SignXFourSum
                        sta0   .PXPP                
                        lda    #<SignXFourSum
                        sta0   .PXDP  
                        lda    #>SignX
                        sta0    .PYPP
                        lda    #<SignX
                        sta0   .PYDP
                        call   .CopyData           
                        ret              
YSquDiff_Trans_X:
                        lda    #>SignYSquDiff
                        sta0   .PXPP                
                        lda    #<SignYSquDiff
                        sta0   .PXDP  
                        lda    #>SignX
                        sta0    .PYPP
                        lda    #<SignX
                        sta0   .PYDP
                        call   .CopyData           
                        ret                        
XYSum_Trans_Y:
                        lda    #>SignXYSum
                        sta0    .PXPP
                        lda    #<SignXYSum
                        sta0   .PXDP
                        lda    #>SignY
                        sta0   .PYPP                
                        lda    #<SignY
                        sta0   .PYDP  
                        call   .CopyData           
                        ret		
                        	
Z_Trans_XYSum:
                        lda    #>SignZ
                        sta0   .PXPP                
                        lda    #<SignZ
                        sta0   .PXDP  
                        lda    #>SignXYSum
                        sta0    .PYPP
                        lda    #<SignXYSum
                        sta0   .PYDP
                        call   .CopyData           
                        ret                        
Z_Trans_XSquYSum:                        
                        lda    #>SignZ
                        sta0   .PXPP                
                        lda    #<SignZ
                        sta0   .PXDP  
                        lda    #>SignXSquYSum
                        sta0    .PYPP
                        lda    #<SignXSquYSum
                        sta0   .PYDP
                        call   .CopyData           
                        ret
Z_Trans_XYMulDiff:
                        lda    #>SignZ
                        sta0   .PXPP                
                        lda    #<SignZ
                        sta0   .PXDP  
                        lda    #>SignXYMulDiff
                        sta0    .PYPP
                        lda    #<SignXYMulDiff
                        sta0   .PYDP
                        call   .CopyData           
                        ret
                                                
XSquYSum_Trans_X:          
                        lda    #>SignXSquYSum
                        sta0    .PXPP
                        lda    #<SignXSquYSum
                        sta0   .PXDP
                        lda    #>SignX
                        sta0   .PYPP                
                        lda    #<SignX
                        sta0   .PYDP  
                        call   .CopyData           

                        ret              
XYMulDiff_Trans_X:
                        lda    #>SignXYMulDiff
                        sta0    .PXPP
                        lda    #<SignXYMulDiff
                        sta0   .PXDP
                        lda    #>SignX
                        sta0   .PYPP                
                        lda    #<SignX
                        sta0   .PYDP  
                        call   .CopyData           
                        ret                        
                        
;Public functions
;; compute Standard deviation
; Clear statistic memory for computing SD 

SD_Scl::
                        lda     #>SDBuf       
                        sta0     Param+0           ;; PP
                        lda	#<SDBuf
			sta0     Param+1           ;; DP
			;lda	#(SDBufEnd-SDBuf+7)
			lda     #27
			sta0	Param+2             ;; Length  
			call    ClearBuf
			lda	#0h
			sta	PP
                        ret
                        
;// Calling the function to prepare SD operation after data input                                        
; Input:OperandX (number)
QR_PrepareX:
LR_PrepareX:
SD_Prepare::
                        call  .X_trans_S
                        call  XSum_Trans_Y                                     
                        call  Addition                                         
                        call  Z_Trans_XSum      ;xSum+=num                       
                        call  .S_trans_X
                        call  .XSqu             ;num^2                           
                        call  .Z_trans_Y                                       
                        call  XSquSum_Trans_X                                  
                        call  Addition          ;XSquSum+=num^2                  
                        call  Z_Trans_XSquSum                                  
                        call .Put_1_to_OperandX                                
                        call  XCnt_Trans_Y                                     
                        call  Addition          ;XCnt+=1                         
                        call  Z_Trans_XCnt                                     
                        call  XSum_Trans_Y                                     
                        call  .Y_trans_X                                       
                        call  Multiplation      ;XSum^2                          
                        call  .Z_trans_Buf                                     
                        call  XSquSum_Trans_X                                  
                        call  XCnt_Trans_Y                                     
                        call  Multiplation      ;XCnt*XSquSum                    
                        call  .Z_trans_X                                       
                        call  .Buf_trans_Y                                     
                        call  Subtration        ;XCnt*XSquSum-(XSum^2)           
                        call  Z_Trans_XSquDiff  ;XSquDiff=XCnt*XSquSum-(XSum^2) 
                        ret                                                    
;// Computing delta(n) for X         
;Input:No
;Output:OperandZ
LR_CalcXPSD::
SD_CalcPSD::
QR_CalcXPSD::
                        call  XSquDiff_Trans_X       ;sqrt(XSquDiff)
                        call  Squ              
                        call  .Z_trans_X       
                        call  XCnt_Trans_Y          
                        call  Division               ;sqrt(XSquDiff)/XCnt
                        ret                    
;// Computing delta(n-1) for X          
;Input:No
;Output:OperandZ
LR_CalcXSSD::
SD_CalcSSD:: 
QR_CalCXSSD::           
                        call  XCnt_Trans_Y           
                        call  .Y_trans_X       
                       ;call  .X_trans_Buf
                        call  Multiplation           ;XCnt^2
                        call  .Z_trans_X  
                       ;call  .Buf_trans_Y     
                        call  XCnt_Trans_Y           
                        call  Subtration             ;XCnt^2-XCnt
                        call  .Z_trans_Y       
                        call  XSquDiff_Trans_X 
                        call  Division               ;sqrt(XSquDiff/XCnt^2-XCnt)
                        call  .Z_trans_X
                        call  Squ                    
                        ret                   
;// Computing X's arithmetic mean           
;Input:No
;Output:OperandZ
QR_CalcXAvg::
LR_CalcXAvg::
SD_CalcXAvg::
                        call  XSum_Trans_Y 
                        call  .Y_trans_X   
                        call  XCnt_Trans_Y 
                        call  Division     
                        ret                
;; Linear Regression      
;// Clear statistic memory for computing LR
LR_Scl::
                        lda   #>LRBuf                          
                        sta0  Param+0           ;; PP          
                        lda   #<LRBuf                    
	                sta0  Param+1           ;; DP          
	                lda   #54           
	                sta0  Param+2             ;; Length 
	                call  ClearBuf                         
	                lda   #0h                           
	                sta   PP                            
                        ret                                    

;// Calling the function to prepare Y's SD operation after data input                                        
; Input:OperandX (number)
QR_PrePareY:
LR_PrepareY:
                        call  .X_trans_S
                        call  YSum_Trans_Y                                     
                        call  Addition                                        
                        call  Z_Trans_YSum       ;YSum+=num                      
                        call  .S_trans_X
                        call  .XSqu              ;num^2                          
                        call  .Z_trans_Y                                      
                        call  YSquSum_Trans_X                                 
                        call  Addition           ;YSquSum+=num^2                 
                        call  Z_Trans_YSquSum                                 
                        ;call .Put_1_to_OperandX                              
                        ;call  YCnt_Trans_Y                                   
                        ;call  Addition          ;YCnt+=1                       
                        ;call  Z_Trans_YCnt                                   
                        call  YSum_Trans_Y                                    
                        call  .Y_trans_X                                      
                        call  Multiplation       ;YSum^2                         
                        call  .Z_trans_Buf                                    
                        call  YSquSum_Trans_X                                 
                        call  YCnt_Trans_Y                                    
                        call  Multiplation       ;YCnt*YSquSum                   
                        call  .Z_trans_X                                      
                        call  .Buf_trans_Y                                    
                        call  Subtration         ;YCnt*YSquSum-(YSum^2)         
                        call  Z_Trans_YSquDiff   ;YSquDiff=YCnt*YSquSum-(YSum^2)
                        ret                                                   
;// Calling the function to prepare LR operation after data input                                        
;Input OperandX,OperandY
LR_Prepare::
;;XYSum+=NumX*NumY
                        call  .Y_trans_B        
                        call  .X_trans_Buf      
                        call  Multiplation      
                        call  .Z_trans_X        
                        call  XYSum_Trans_Y     
                        call  Addition          
                        call  Z_Trans_XYSum     
;;                        
                        call .Buf_trans_X       
                        call  LR_PrepareX       
;;                        
                        call  .B_trans_X        
                        call  LR_PrepareY       
;;XSum*YSum
                        
                        call  YSum_Trans_Y      
                        call  .Y_trans_X        
                        call  XSum_Trans_Y
                        call  Multiplation
                        call  .Z_trans_Buf      
;;XYSum*XCnt                                                      
                        call  XCnt_Trans_Y      
                        call  .Y_trans_X        
                        call  XYSum_Trans_Y     
                        call  Multiplation      
;;XYSum*XCnt-XSum*YSum                        
                        call  .Z_trans_X   
                        call  .Buf_trans_Y      
                        call  Subtration        
                        call  Z_Trans_XYMulDiff  ;XYMulDiff=XYSum*XCnt-XSum*YSum
                        ret                     
                                                
;// Computing delta(n) for Y                      
QR_CalCYPSD::
LR_CalcYPSD::
                        call  YSquDiff_Trans_X       ;sqrt(YSquDiff)
                        call  Squ             
                        call  .Z_trans_X      
                        call  YCnt_Trans_Y    
                        call  Division               ;sqrt(YSquDiff)/YCnt
                        ret                   
           
;// Computing delta(n-1) for Y                                                       
; Input:No

⌨️ 快捷键说明

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