📄 sat.asl
字号:
+ 401 ;lda #(SDBufEnd-SDBuf+7)
0234 F3 1B 402 lda #27
0236 F9 02 403 sta0 Param+2 ;; Length
0238 20 00 00 404 call ClearBuf
023B F3 00 405 lda #0h
023D FC 28 406 sta PP
023F 24 407 ret
+ 408
+ 409 ;// Calling the function to prepare SD operation after data input
+ 410 ; Input:OperandX (number)
0240 411 QR_PrepareX:
0240 412 LR_PrepareX:
0240 413 SD_Prepare::
0240 20 00 00 414 call .X_trans_S
0243 20 00 74 415 call XSum_Trans_Y
0246 20 00 00 416 call Addition
0249 20 00 88 417 call Z_Trans_XSum ;xSum+=num
024C 20 00 00 418 call .S_trans_X
024F 20 00 00 419 call .XSqu ;num^2
0252 20 00 00 420 call .Z_trans_Y
0255 20 00 9C 421 call XSquSum_Trans_X
0258 20 00 00 422 call Addition ;XSquSum+=num^2
025B 20 00 B0 423 call Z_Trans_XSquSum
025E 20 00 00 424 call .Put_1_to_OperandX
0261 20 00 60 425 call XCnt_Trans_Y
0264 20 00 00 426 call Addition ;XCnt+=1
0267 20 00 4C 427 call Z_Trans_XCnt
026A 20 00 74 428 call XSum_Trans_Y
026D 20 00 00 429 call .Y_trans_X
0270 20 00 00 430 call Multiplation ;XSum^2
0273 20 00 00 431 call .Z_trans_Buf
0276 20 00 9C 432 call XSquSum_Trans_X
0279 20 00 60 433 call XCnt_Trans_Y
027C 20 00 00 434 call Multiplation ;XCnt*XSquSum
027F 20 00 00 435 call .Z_trans_X
0282 20 00 00 436 call .Buf_trans_Y
0285 20 00 00 437 call Subtration ;XCnt*XSquSum-(XSum^2)
0288 20 00 D8 438 call Z_Trans_XSquDiff ;XSquDiff=XCnt*XSquSum-(XSum^2)
028B 24 439 ret
+ 440 ;// Computing delta(n) for X
+ 441 ;Input:No
+ 442 ;Output:OperandZ
028C 443 LR_CalcXPSD::
028C 444 SD_CalcPSD::
028C 445 QR_CalcXPSD::
028C 20 01 00 446 call XSquDiff_Trans_X ;sqrt(XSquDiff)
028F 20 00 00 447 call Squ
0292 20 00 00 448 call .Z_trans_X
0295 20 00 60 449 call XCnt_Trans_Y
0298 20 00 00 450 call Division ;sqrt(XSquDiff)/XCnt
029B 24 451 ret
+ 452 ;// Computing delta(n-1) for X
+ 453 ;Input:No
+ 454 ;Output:OperandZ
029C 455 LR_CalcXSSD::
029C 456 SD_CalcSSD::
029C 457 QR_CalCXSSD::
029C 20 00 60 458 call XCnt_Trans_Y
029F 20 00 00 459 call .Y_trans_X
+ 460 ;call .X_trans_Buf
02A2 20 00 00 461 call Multiplation ;XCnt^2
02A5 20 00 00 462 call .Z_trans_X
+ 463 ;call .Buf_trans_Y
02A8 20 00 60 464 call XCnt_Trans_Y
02AB 20 00 00 465 call Subtration ;XCnt^2-XCnt
02AE 20 00 00 466 call .Z_trans_Y
02B1 20 01 00 467 call XSquDiff_Trans_X
02B4 20 00 00 468 call Division ;sqrt(XSquDiff/XCnt^2-XCnt)
02B7 20 00 00 469 call .Z_trans_X
02BA 20 00 00 470 call Squ
02BD 24 471 ret
+ 472 ;// Computing X's arithmetic mean
+ 473 ;Input:No
+ 474 ;Output:OperandZ
02BE 475 QR_CalcXAvg::
02BE 476 LR_CalcXAvg::
02BE 477 SD_CalcXAvg::
02BE 20 00 74 478 call XSum_Trans_Y
02C1 20 00 00 479 call .Y_trans_X
02C4 20 00 60 480 call XCnt_Trans_Y
02C7 20 00 00 481 call Division
02CA 24 482 ret
+ 483 ;; Linear Regression
+ 484 ;// Clear statistic memory for computing LR
02CB 485 LR_Scl::
02CB F3 00 486 lda #>LRBuf
02CD F9 00 487 sta0 Param+0 ;; PP
02CF F3 00 488 lda #<LRBuf
02D1 F9 01 489 sta0 Param+1 ;; DP
02D3 F3 36 490 lda #54
02D5 F9 02 491 sta0 Param+2 ;; Length
02D7 20 00 00 492 call ClearBuf
02DA F3 00 493 lda #0h
02DC FC 28 494 sta PP
02DE 24 495 ret
+ 496
+ 497 ;// Calling the function to prepare Y's SD operation after data input
+ 498 ; Input:OperandX (number)
02DF 499 QR_PrePareY:
02DF 500 LR_PrepareY:
02DF 20 00 00 501 call .X_trans_S
02E2 20 01 14 502 call YSum_Trans_Y
02E5 20 00 00 503 call Addition
02E8 20 01 28 504 call Z_Trans_YSum ;YSum+=num
02EB 20 00 00 505 call .S_trans_X
02EE 20 00 00 506 call .XSqu ;num^2
02F1 20 00 00 507 call .Z_trans_Y
02F4 20 01 3C 508 call YSquSum_Trans_X
02F7 20 00 00 509 call Addition ;YSquSum+=num^2
02FA 20 01 50 510 call Z_Trans_YSquSum
+ 511 ;call .Put_1_to_OperandX
+ 512 ;call YCnt_Trans_Y
+ 513 ;call Addition ;YCnt+=1
+ 514 ;call Z_Trans_YCnt
02FD 20 01 14 515 call YSum_Trans_Y
0300 20 00 00 516 call .Y_trans_X
0303 20 00 00 517 call Multiplation ;YSum^2
0306 20 00 00 518 call .Z_trans_Buf
0309 20 01 3C 519 call YSquSum_Trans_X
030C 20 00 60 520 call YCnt_Trans_Y
030F 20 00 00 521 call Multiplation ;YCnt*YSquSum
0312 20 00 00 522 call .Z_trans_X
0315 20 00 00 523 call .Buf_trans_Y
0318 20 00 00 524 call Subtration ;YCnt*YSquSum-(YSum^2)
031B 20 01 78 525 call Z_Trans_YSquDiff ;YSquDiff=YCnt*YSquSum-(YSum^2)
031E 24 526 ret
+ 527 ;// Calling the function to prepare LR operation after data input
+ 528 ;Input OperandX,OperandY
031F 529 LR_Prepare::
+ 530 ;;XYSum+=NumX*NumY
031F 20 00 00 531 call .Y_trans_B
0322 20 00 00 532 call .X_trans_Buf
0325 20 00 00 533 call Multiplation
0328 20 00 00 534 call .Z_trans_X
032B 20 01 B4 535 call XYSum_Trans_Y
032E 20 00 00 536 call Addition
0331 20 01 C8 537 call Z_Trans_XYSum
+ 538 ;;
0334 20 00 00 539 call .Buf_trans_X
0337 20 02 40 540 call LR_PrepareX
+ 541 ;;
033A 20 00 00 542 call .B_trans_X
033D 20 02 DF 543 call LR_PrepareY
+ 544 ;;XSum*YSum
+ 545
0340 20 01 14 546 call YSum_Trans_Y
0343 20 00 00 547 call .Y_trans_X
0346 20 00 74 548 call XSum_Trans_Y
0349 20 00 00 549 call Multiplation
034C 20 00 00 550 call .Z_trans_Buf
+ 551 ;;XYSum*XCnt
034F 20 00 60 552 call XCnt_Trans_Y
0352 20 00 00 553 call .Y_trans_X
0355 20 01 B4 554 call XYSum_Trans_Y
0358 20 00 00 555 call Multiplation
+ 556 ;;XYSum*XCnt-XSum*YSum
035B 20 00 00 557 call .Z_trans_X
035E 20 00 00 558 call .Buf_trans_Y
0361 20 00 00 559 call Subtration
0364 20 01 F0 560 call Z_Trans_XYMulDiff ;XYMulDiff=XYSum*XCnt-XSum*YSum
0367 24 561 ret
+ 562
+ 563 ;// Computing delta(n) for Y
0368 564 QR_CalCYPSD::
0368 565 LR_CalcYPSD::
0368 20 01 A0 566 call YSquDiff_Trans_X ;sqrt(YSquDiff)
036B 20 00 00 567 call Squ
036E 20 00 00 568 call .Z_trans_X
0371 20 00 60 569 call YCnt_Trans_Y
0374 20 00 00 570 call Division ;sqrt(YSquDiff)/YCnt
0377 24 571 ret
+ 572
+ 573 ;// Computing delta(n-1) for Y
+ 574 ; Input:No
+ 575 ; Output:OperandZ
0378 576 LR_CalcYSSD::
0378 20 00 60 577 call YCnt_Trans_Y
037B 20 00 00 578 call .Y_trans_X
+ 579 ;call .X_trans_Buf
037E 20 00 00 580 call Multiplation ;YCnt^2
0381 20 00 00 581 call .Z_trans_X
+ 582 ;call .Buf_trans_Y
0384 20 00 60 583 call YCnt_Trans_Y
0387 20 00 00 584 call Subtration ;YCnt^2-YCnt
038A 20 00 00 585 call .Z_trans_Y
038D 20 01 A0 586 call YSquDiff_Trans_X
0390 20 00 00 587 call Division ;sqrt(YSquDiff/YCnt^2-YCnt)
0393 20 00 00 588 call .Z_trans_X
0396 20 00 00 589 call Squ
0399 24 590 ret
+ 591
+ 592 ;// Computing Y's arithmetic mean
+ 593 ; Input:No
+ 594 ; Output:OperandZ
039A 595 LR_CalcYAvg::
039A 20 01 14 596 call YSum_Trans_Y ;YSum/YCnt
039D 20 00 00 597 call .Y_trans_X
03A0 20 00 60 598 call YCnt_Trans_Y
03A3 20 00 00 599 call Division
03A6 24 600 ret
+ 601
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -