📄 sat.asm
字号:
; 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 + -