📄 ad2543.lst
字号:
0516 92EA ST R14,-Y
0517 92FA ST R15,-Y
0518 938A ST R24,-Y
0519 922A ST R2,-Y
051A 923A ST R3,-Y
051B 924A ST R4,-Y
051C 939A ST R25,-Y
051D 93AA ST R26,-Y
051E 93BA ST R27,-Y
051F 9508 RET
restore_floatregs:
0520 91B9 LD R27,Y+
0521 91A9 LD R26,Y+
0522 9199 LD R25,Y+
0523 9049 LD R4,Y+
0524 9039 LD R3,Y+
0525 9029 LD R2,Y+
0526 9189 LD R24,Y+
0527 90F9 LD R15,Y+
0528 90E9 LD R14,Y+
0529 90D9 LD R13,Y+
052A 9508 RET
stk2arg1:
052B 842A LDD R2,Y+10
052C 843B LDD R3,Y+11
052D 844C LDD R4,Y+12
052E 859D LDD R25,Y+13
052F 9508 RET
stk2arg0:
0530 850E LDD R16,Y+14
0531 851F LDD R17,Y+15
0532 8928 LDD R18,Y+16
0533 8939 LDD R19,Y+17
0534 9508 RET
float_epilog:
0535 DFEA RCALL restore_floatregs
0536 920F PUSH R0
0537 B60F IN R0,0x3F
0538 9628 ADIW R28,0x8
0539 BE0F OUT 0x3F,R0
053A 900F POP R0
053B 9508 RET
float_prolog:
053C DFD8 RCALL save_floatregs
053D DFF2 RCALL stk2arg0
053E CFEC RJMP stk2arg1
add32fs:
053F D002 RCALL add32f
0540 940C03C6 JMP push_arg4
add32f:
0542 940E053C CALL float_prolog
0544 D012 RCALL FADD
0545 940C0535 JMP float_epilog
sub32fs:
0547 D002 RCALL sub32f
0548 940C03C6 JMP push_arg4
sub32f:
054A 940E053C CALL float_prolog
054C D009 RCALL FSUB
054D 940C0535 JMP float_epilog
fret2:
054F 2F8A MOV R24,R26
0550 2F39 MOV R19,R25
0551 2D24 MOV R18,R4
0552 2D13 MOV R17,R3
0553 2D02 MOV R16,R2
0554 940C069C JMP repack
FSUB:
0556 5890 SUBI R25,0x80
FADD:
0557 940E068A CALL unpack
0559 3890 CPI R25,0x80
055A F3C9 BEQ 0x0554
055B 3830 CPI R19,0x80
055C F391 BEQ 0x054F
055D 2FB3 MOV R27,R19
055E 1BB9 SUB R27,R25
055F F3A3 BVS 0x0554
0560 F02A BMI 0x0566
0561 F439 BNE 0x0569
0562 1502 CP R16,R2
0563 0513 CPC R17,R3
0564 0524 CPC R18,R4
0565 F418 BCC 0x0569
0566 940E067E CALL swapacc
0568 CFF4 RJMP 0x055D
0569 31B8 CPI R27,0x18
056A F018 BCS 0x056E
056B 2422 CLR R2
056C 2433 CLR R3
056D 2444 CLR R4
056E 30B8 CPI R27,0x8
056F F028 BCS 0x0575
0570 2C23 MOV R2,R3
0571 2C34 MOV R3,R4
0572 2444 CLR R4
0573 50B8 SUBI R27,0x8
0574 CFF9 RJMP 0x056E
0575 23BB TST R27
0576 F029 BEQ 0x057C
0577 9446 LSR R4
0578 9437 ROR R3
0579 9427 ROR R2
057A 95BA DEC R27
057B F7D9 BNE 0x0577
057C 2FB8 MOV R27,R24
057D 27BA EOR R27,R26
057E F04A BMI 0x0588
057F D018 RCALL 0x0598
0580 F698 BCC 0x0554
0581 9527 ROR R18
0582 9517 ROR R17
0583 9507 ROR R16
0584 5F3F SUBI R19,0xFF
0585 F673 BVC 0x0554
0586 940C066B JMP maxres
0588 D013 RCALL usub24
0589 F411 BNE 0x058C
058A 940C0672 JMP minres
058C F410 BCC 0x058F
058D 940E0665 CALL negmant
058F 2322 TST R18
0590 F21A BMI 0x0554
0591 0F00 LSL R16
0592 1F11 ROL R17
0593 1F22 ROL R18
0594 5031 SUBI R19,1
0595 F7CB BVC 0x058F
0596 940C066B JMP maxres
0598 0D02 ADD R16,R2
0599 1D13 ADC R17,R3
059A 1D24 ADC R18,R4
059B 9508 RET
usub24:
059C 1902 SUB R16,R2
059D 0913 SBC R17,R3
059E 0924 SBC R18,R4
059F 9508 RET
div32fs:
05A0 D002 RCALL div32f
05A1 940C03C6 JMP push_arg4
div32f:
05A3 940E053C CALL float_prolog
05A5 D023 RCALL FDIV
05A6 940C0535 JMP float_epilog
05A8 93BA ST R27,-Y
05A9 24DD CLR R13
05AA 24EE CLR R14
05AB 24FF CLR R15
05AC E1B8 LDI R27,0x18
05AD 1502 CP R16,R2
05AE 0513 CPC R17,R3
05AF 0524 CPC R18,R4
05B0 F028 BCS 0x05B6
05B1 1902 SUB R16,R2
05B2 0913 SBC R17,R3
05B3 0924 SBC R18,R4
05B4 9408 BSET 0
05B5 C001 RJMP 0x05B7
05B6 9488 BCLR 0
05B7 1CDD ROL R13
05B8 1CEE ROL R14
05B9 1CFF ROL R15
05BA 0F00 LSL R16
05BB 1F11 ROL R17
05BC 1F22 ROL R18
05BD 95BA DEC R27
05BE F771 BNE 0x05AD
05BF 2D0D MOV R16,R13
05C0 2D1E MOV R17,R14
05C1 2D2F MOV R18,R15
05C2 91B9 LD R27,Y+
05C3 9508 RET
fdiv10:
05C4 2422 CLR R2
05C5 2433 CLR R3
05C6 E2B0 LDI R27,0x20
05C7 2E4B MOV R4,R27
05C8 E491 LDI R25,0x41
FDIV:
05C9 2399 TST R25
05CA F129 BEQ 0x05F0
05CB 2333 TST R19
05CC F151 BEQ 0x05F7
05CD 940E068A CALL unpack
05CF F139 BEQ 0x05F7
05D0 278A EOR R24,R26
05D1 9408 BSET 0
05D2 0B39 SBC R19,R25
05D3 F0EB BVS 0x05F1
05D4 9446 LSR R4
05D5 9437 ROR R3
05D6 9427 ROR R2
05D7 9526 LSR R18
05D8 9517 ROR R17
05D9 9507 ROR R16
05DA DFCD RCALL 0x05A8
05DB 2322 TST R18
05DC F02A BMI 0x05E2
05DD 0F00 LSL R16
05DE 1F11 ROL R17
05DF 1F22 ROL R18
05E0 5031 SUBI R19,1
05E1 F07B BVS 0x05F1
05E2 2FB0 MOV R27,R16
05E3 95B6 LSR R27
05E4 F048 BCS 0x05EE
05E5 2300 TST R16
05E6 F43A BPL 0x05EE
05E7 2311 TST R17
05E8 F42A BPL 0x05EE
05E9 E0B1 LDI R27,1
05EA 0F0B ADD R16,R27
05EB 27BB CLR R27
05EC 1F1B ADC R17,R27
05ED 1F2B ADC R18,R27
05EE 940C069C JMP repack
05F0 C006 RJMP 0x05F7
05F1 E7BF LDI R27,0x7F
05F2 2F3B MOV R19,R27
05F3 2B2B OR R18,R27
05F4 EF0F LDI R16,0xFF
05F5 EF1F LDI R17,0xFF
05F6 9508 RET
05F7 2700 CLR R16
05F8 2711 CLR R17
05F9 2722 CLR R18
05FA 2733 CLR R19
05FB 2788 CLR R24
05FC 9508 RET
05FD E7BF LDI R27,0x7F
05FE 2F3B MOV R19,R27
05FF 2B2B OR R18,R27
0600 EF0F LDI R16,0xFF
0601 EF1F LDI R17,0xFF
0602 9508 RET
0603 2700 CLR R16
0604 2711 CLR R17
0605 2722 CLR R18
0606 2733 CLR R19
0607 2788 CLR R24
0608 9508 RET
empy32fs:
0609 D002 RCALL empy32f
060A 940C03C6 JMP push_arg4
empy32f:
060C 940E053C CALL float_prolog
060E 920F PUSH R0
060F 92CF PUSH R12
0610 D004 RCALL eFMUL
0611 90CF POP R12
0612 900F POP R0
0613 940C0535 JMP float_epilog
eFMUL:
0615 940E068A CALL unpack
0617 F359 BEQ 0x0603
0618 3890 CPI R25,0x80
0619 F349 BEQ 0x0603
061A 278A EOR R24,R26
061B 9408 BSET 0
061C 1F39 ADC R19,R25
061D F2FB BVS 0x05FD
061E D00E RCALL eumul24
061F 2D2F MOV R18,R15
0620 2D1E MOV R17,R14
0621 2D0D MOV R16,R13
0622 2322 TST R18
0623 F02A BMI 0x0629
0624 953A DEC R19
0625 0CCC LSL R12
0626 1F00 ROL R16
0627 1F11 ROL R17
0628 1F22 ROL R18
0629 5F3F SUBI R19,0xFF
062A F293 BVS 0x05FD
062B 940C069C JMP repack
eumul24:
062D 9D22 MUL R18,R2
062E 2CC0 MOV R12,R0
062F 2CD1 MOV R13,R1
0630 9D24 MUL R18,R4
0631 2CE0 MOV R14,R0
0632 2CF1 MOV R15,R1
0633 9D12 MUL R17,R2
0634 0CC1 ADD R12,R1
0635 1EDB ADC R13,R27
0636 1EEB ADC R14,R27
0637 1EFB ADC R15,R27
0638 9D03 MUL R16,R3
0639 0CC1 ADD R12,R1
063A 1EDB ADC R13,R27
063B 1EEB ADC R14,R27
063C 1EFB ADC R15,R27
063D 9D13 MUL R17,R3
063E 0CC0 ADD R12,R0
063F 1CD1 ADC R13,R1
0640 1EEB ADC R14,R27
0641 1EFB ADC R15,R27
0642 9D04 MUL R16,R4
0643 0CC0 ADD R12,R0
0644 1CD1 ADC R13,R1
0645 1EEB ADC R14,R27
0646 1EFB ADC R15,R27
0647 9D23 MUL R18,R3
0648 0CD0 ADD R13,R0
0649 1CE1 ADC R14,R1
064A 1EFB ADC R15,R27
064B 9D14 MUL R17,R4
064C 0CD0 ADD R13,R0
064D 1CE1 ADC R14,R1
064E 1EFB ADC R15,R27
064F 20CC TST R12
0650 F422 BPL 0x0655
0651 9488 BCLR 0
0652 1EDB ADC R13,R27
0653 1EEB ADC R14,R27
0654 1EFB ADC R15,R27
0655 9508 RET
savfacc1:
0656 938A ST R24,-Y
0657 93BA ST R27,-Y
0658 9508 RET
restorefacc1:
0659 91B9 LD R27,Y+
065A 9189 LD R24,Y+
065B 9508 RET
unpackfacc1:
065C 2F83 MOV R24,R19
065D 7880 ANDI R24,0x80
065E 0F22 LSL R18
065F 1F33 ROL R19
0660 5830 SUBI R19,0x80
0661 9408 BSET 0
0662 9527 ROR R18
0663 3830 CPI R19,0x80
0664 9508 RET
negmant:
0665 9510 COM R17
0666 9520 COM R18
0667 9501 NEG R16
0668 4F1F SBCI R17,0xFF
0669 4F2F SBCI R18,0xFF
066A 9508 RET
maxres:
066B E7BF LDI R27,0x7F
066C 2F3B MOV R19,R27
066D 2B2B OR R18,R27
066E EFBF LDI R27,0xFF
066F 2F0B MOV R16,R27
0670 2F1B MOV R17,R27
0671 9508 RET
minres:
0672 2700 CLR R16
0673 2711 CLR R17
0674 2722 CLR R18
0675 2733 CLR R19
0676 2788 CLR R24
0677 9508 RET
ac1toac2:
0678 2F93 MOV R25,R19
0679 2E20 MOV R2,R16
067A 2E31 MOV R3,R17
067B 2E42 MOV R4,R18
067C 2FA8 MOV R26,R24
067D 9508 RET
swapacc:
067E 922A ST R2,-Y
067F 923A ST R3,-Y
0680 924A ST R4,-Y
0681 939A ST R25,-Y
0682 93AA ST R26,-Y
0683 DFF4 RCALL ac1toac2
0684 9189 LD R24,Y+
0685 9139 LD R19,Y+
0686 9129 LD R18,Y+
0687 9119 LD R17,Y+
0688 9109 LD R16,Y+
0689 9508 RET
unpack:
068A 2F83 MOV R24,R19
068B E8B0 LDI R27,0x80
068C 0F22 LSL R18
068D 1F33 ROL R19
068E 273B EOR R19,R27
068F 0FBB LSL R27
0690 9527 ROR R18
0691 7880 ANDI R24,0x80
0692 2FA9 MOV R26,R25
0693 E8B0 LDI R27,0x80
0694 0C44 LSL R4
0695 1F99 ROL R25
0696 279B EOR R25,R27
0697 0FBB LSL R27
0698 9447 ROR R4
0699 78A0 ANDI R26,0x80
069A 3830 CPI R19,0x80
069B 9508 RET
repack:
069C 0F22 LSL R18
069D E8B0 LDI R27,0x80
069E 27B3 EOR R27,R19
069F 0F88 LSL R24
06A0 95B7 ROR R27
06A1 9527 ROR R18
06A2 2F3B MOV R19,R27
06A3 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -