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

📄 sat.asm

📁 这是用台湾KingB 8位单片机开发的科学计算器程序
💻 ASM
📖 第 1 页 / 共 5 页
字号:
; Output:OperandZ                                     
LR_CalcYSSD::
                        call  YCnt_Trans_Y           
                        call  .Y_trans_X       
                        ;call  .X_trans_Buf
                        call  Multiplation           ;YCnt^2
                        call  .Z_trans_X  
                        ;call  .Buf_trans_Y     
                        call  YCnt_Trans_Y           
                        call  Subtration             ;YCnt^2-YCnt
                        call  .Z_trans_Y       
                        call  YSquDiff_Trans_X 
                        call  Division               ;sqrt(YSquDiff/YCnt^2-YCnt)
                        call  .Z_trans_X
                        call  Squ                    
                        ret                    
           
;// Computing Y's arithmetic mean                                 
; Input:No
; Output:OperandZ                                     
LR_CalcYAvg::
                        call  YSum_Trans_Y           ;YSum/YCnt
                        call  .Y_trans_X        
                        call  YCnt_Trans_Y      
                        call  Division          
                        ret                     
           
;// Computing LR coefficient B      
; Input:No
; Output:OperandZ                                     
LR_CalcB::
                        call XSquDiff_Trans_X       ;XYMulDiff/XSquDiff
                        call .X_trans_Y         
                        call XYMulDiff_Trans_X  
                        call Division           
                        ret                     
           
;// Computing LR coefficient A                                 
;Input:No
;Output:OperandZ
LR_CalcA::
                        call  LR_CalCB              ;YSum-(LR_CalCB()*XSum)
                        call  .Z_trans_X  
                        call  XSum_Trans_Y
                        call  Multiplation
                        call  YSum_Trans_Y
                        call  .Y_trans_X  
                        call  .Z_trans_Y  
                        call  Subtration  
                        call  .Z_trans_X            ;(YSum-(LR_CalCB()*XSum))/XCnt
                        call  XCnt_Trans_Y
                        call  Division    
                        ret               
;// Computing LR regression's coefficient R                                            
; Input:No
; Output:OperandZ                                     
LR_CalcR::
QR_CalcR::
                        call YSquDiff_Trans_X     ;XSquDiff*YSquDiff
                        call .X_trans_Y           
                        call XSquDiff_Trans_X  
                        call Multiplation      
                        call .Z_trans_X        
                        call Squ                  ;Sqrt(XSquDiff*YSquDiff) 
                        call .Z_trans_Y        
                        call XYMulDiff_Trans_X 
                        call Division             ;XYMulDiff/sqrt(XSquDiff*YSquDiff) 
                        ret                    
;Exp reg                        
LR_ExpEstimateX::
                        call .X_trans_S          
                        call  LR_CalcA           
                        call .Z_trans_X 
                        call Ex
                        call .Z_trans_Y
                        call .S_trans_X
                        call  Division
                        call  .Z_trans_X
                        call  Ln                 ;Ln(OperandX/LR_CalCA)            
                        call .Z_trans_S
                        call  LR_CalcB
                        call .Z_trans_Y
                        call .S_trans_X
                        call  Division           ;(OperandX-LR_CalCA)/LR_CalCB
                        ret           
                        
LR_ExpEstimateY::
                        call .X_trans_S          
                        call  LR_CalcB
                        call .Z_trans_Y
                        call .S_trans_X
                        call Multiplation
                        call .Z_trans_X 
                        call Ex
                        call .Z_trans_S
                        call LR_CalcA           
                        call .Z_trans_X
                        call Ex
                        call .Z_trans_X 
                        call .S_trans_Y
                        call Multiplation 
                        ret         
;pwr reg                        
LR_PwrEstimateX::
                        call  LR_ExpEstimateX
                        call  .Z_trans_X
                        call  Ex                 
                        ret  
LR_PwrEstimateY::
                        call  .X_trans_S
                        call  LR_CalcB
                        call  .Z_trans_Y
                        call  .S_trans_X
                        call  .Pow_x_y
                        call  .Z_trans_S
                        call  LR_CalcA
                        call .Z_trans_X 
                        call  Ex                 
                        call  .Z_trans_X
                        call  .S_trans_Y
                        call  Multiplation 
                        ret
;log reg                                                                      
LR_LnEstimateX::
                        call  LR_EstimateX
                        call  .Z_trans_X
                        call  Ex
                        ret
                        
LR_LnEstimateY::
                        call  Ln
                        call  .Z_trans_X
                        call  LR_EstimateY            
                        ret                        
;inv reg                                       
LR_InvEstimateX::
                        call .X_trans_S          
                        call LR_CalcA           
                        call .Z_trans_Y
                        call .S_trans_X
                        call  Subtration         ;OperandX-LR_CalCA            
                        call .Z_trans_S
                        call  LR_CalcB
                        call .Z_trans_X
                        call .S_trans_Y
                        call  Division           
                        ret
                        
LR_InvEstimateY::
                        call  .ReciX
                        call  .Z_trans_X
                        call  LR_EstimateY            
                        ret
                                                               
;// Computing X's estimation           
;Input:OperandX
;Output:OperandZ
LR_EstimateX::
                        call .X_trans_S          
                        call LR_CalcA           
                        call .Z_trans_Y
                        call .S_trans_X
                        call  Subtration         ;OperandX-LR_CalCA            
                        call .Z_trans_S
                        call  LR_CalcB
                        call .Z_trans_Y
                        call .S_trans_X
                        call  Division           ;(OperandX-LR_CalCA)/LR_CalCB
                        ret
           
;// Computing Y's estimation                      
;Input:OperandX
;Output:OperandZ
LR_EstimateY::
                        call  .X_trans_S          
                        call  LR_CalCB             
                        call  .Z_trans_Y
                        call  .S_trans_X
                        call  Multiplation      ;OperandX*LR_CalCB   
                        call  .Z_trans_S
                        call  LR_CalcA
                        call  .Z_trans_X
                        call  .S_trans_Y
                        call   Addition         ;LR_CalCA+OperandX*LR_CalCB   
                        ret           

 ;;Compute SUM(x^2)
;Input:No
;Output:OperandZ
SD_CalcXSquSum::
LR_CalcXSquSum::
QR_CalcXSquSum::
                        call  XSquSum_Trans_X                                  
                        call  .X_trans_Z           
                        ret
;Compute SUM(X)                        
;Input:No
;Output:OperandZ                        
SD_CalcXSum:                        
LR_CalcXSum:    
QR_CalcXSum:               
                        call  XSum_Trans_Y                                  
                        call  .Y_trans_Z           
                        ret
;Compute X's number(or count)                         
;Input:No
;Output:OperandZ                        
SD_CalCXCnt::                        
LR_CalcXCnt::
LR_calcYCnt::
QR_CalcXCnt::
QR_calcYCnt::
                        call  XCnt_Trans_Y                                                             
                        call  .Y_trans_Z           
                        ret            
                        
;;Compute SUM(y^2)
;Input:No
;Output:OperandZ
QR_CalcYSquSum::
LR_CalcYSquSum::
                        call  YSquSum_Trans_X                                  
                        call  .X_trans_Z           
                        ret
;Compute SUM(Y)                        
;Input:No
;Output:OperandZ                        
QR_CalcYSum::
LR_CalcYSum::               
                        call  YSum_Trans_Y                                  
                        call  .Y_trans_Z           
                        ret
;Compute Sum of XY
;Input:No
;Output:OperandZ                                                
QR_CalcXYSum::                        
LR_CalcXYSum::
                        call  XYSum_Trans_Y     
                        call  .Y_trans_Z              
                        ret                        
;Compute sum of X^3
;input:No
;Output:OperandZ                        
QR_CalcXCubeSum::
                        call  XCubeSum_Trans_X
                        call  .X_trans_Z
                        ret
;Compute sum of X^4                        
;Input:No
;Output:OperandZ
QR_CalcXFourSum::
                        call   XFourSum_Trans_X
                        call   .X_trans_Z  
                        ret                        
                        
;Compute sum of [(X^2)*Y]
;Input:No
;Output:OperandZ
QR_CalcXSquYSum::
                        call   XSquYSum_Trans_X
                        call   .X_trans_Z
                        ret                        
                   
                                    
;Input,Output:No
;Clear statistic memory for computing LR                        
QR_Scl::
                        lda   #>QRBuf                          
                        sta0  Param+0           ;; PP          
                        lda   #<QRBuf                    
	                sta0  Param+1           ;; DP          
	                lda   #81           
	                sta0  Param+2             ;; Length 
	                call  ClearBuf                         
	                lda   #0h                           
	                sta   PP                            
                        ret                                    
                        


;Calling the function to prepare QR operation after data input                                        
;Input:OperandX,OperandY
;Output:No
QR_Prepare::
                        
                        call  .X_trans_B        ;x 
                        call  .Y_trans_R        ;y   

⌨️ 快捷键说明

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