📄 m8pwm.lst
字号:
038B 5FB8 SUBI R27,0xF8
038C 2F32 MOV R19,R18
038D 2F21 MOV R18,R17
038E 2F10 MOV R17,R16
038F E800 LDI R16,0x80
0390 C006 RJMP 0x0397
0391 2F01 MOV R16,R17
0392 2F12 MOV R17,R18
0393 E020 LDI R18,0
0394 50B8 SUBI R27,0x8
0395 30B8 CPI R27,0x8
0396 F7D0 BCC 0x0391
0397 23BB TST R27
0398 F031 BEQ 0x039F
0399 9536 LSR R19
039A 9527 ROR R18
039B 9517 ROR R17
039C 9507 ROR R16
039D 95BA DEC R27
039E F7D1 BNE 0x0399
039F 9508 RET
int2fp:
03A0 2722 CLR R18
03A1 FD17 SBRC R17,7
03A2 9520 COM R18
03A3 2733 CLR R19
03A4 FD27 SBRC R18,7
03A5 9530 COM R19
long2fp:
03A6 D119 RCALL savfacc1
03A7 D001 RCALL ITOF
03A8 C11A RJMP restorefacc1
ITOF:
03A9 2788 CLR R24
03AA 2333 TST R19
03AB F412 BPL 0x03AE
03AC DF6A RCALL neg32
03AD 9580 COM R24
03AE 2FB0 MOV R27,R16
03AF 2BB1 OR R27,R17
03B0 2BB2 OR R27,R18
03B1 2BB3 OR R27,R19
03B2 F409 BNE 0x03B4
03B3 C128 RJMP minres
03B4 E1B6 LDI R27,0x16
03B5 C005 RJMP itof2
03B6 95B3 INC R27
03B7 9536 LSR R19
03B8 9527 ROR R18
03B9 9517 ROR R17
03BA 9507 ROR R16
itof2:
03BB 2333 TST R19
03BC F7C9 BNE 0x03B6
itof3:
03BD 2322 TST R18
03BE F449 BNE 0x03C8
03BF 50B8 SUBI R27,0x8
03C0 2F21 MOV R18,R17
03C1 2F10 MOV R17,R16
03C2 E000 LDI R16,0
03C3 CFF9 RJMP itof3
03C4 95BA DEC R27
03C5 0F00 LSL R16
03C6 1F11 ROL R17
03C7 1F22 ROL R18
03C8 F7DA BPL 0x03C4
03C9 2F3B MOV R19,R27
03CA C13B RJMP repack
save_floatregs:
03CB 92DA ST R13,-Y
03CC 92EA ST R14,-Y
03CD 92FA ST R15,-Y
03CE 938A ST R24,-Y
03CF 922A ST R2,-Y
03D0 923A ST R3,-Y
03D1 924A ST R4,-Y
03D2 939A ST R25,-Y
03D3 93AA ST R26,-Y
03D4 93BA ST R27,-Y
03D5 9508 RET
restore_floatregs:
03D6 91B9 LD R27,Y+
03D7 91A9 LD R26,Y+
03D8 9199 LD R25,Y+
03D9 9049 LD R4,Y+
03DA 9039 LD R3,Y+
03DB 9029 LD R2,Y+
03DC 9189 LD R24,Y+
03DD 90F9 LD R15,Y+
03DE 90E9 LD R14,Y+
03DF 90D9 LD R13,Y+
03E0 9508 RET
stk2arg1:
03E1 842A LDD R2,Y+10
03E2 843B LDD R3,Y+11
03E3 844C LDD R4,Y+12
03E4 859D LDD R25,Y+13
03E5 9508 RET
stk2arg0:
03E6 850E LDD R16,Y+14
03E7 851F LDD R17,Y+15
03E8 8928 LDD R18,Y+16
03E9 8939 LDD R19,Y+17
03EA 9508 RET
float_epilog:
03EB DFEA RCALL restore_floatregs
03EC 920F PUSH R0
03ED B60F IN R0,0x3F
03EE 9628 ADIW R28,0x8
03EF BE0F OUT 0x3F,R0
03F0 900F POP R0
03F1 9508 RET
float_prolog:
03F2 DFD8 RCALL save_floatregs
03F3 DFF2 RCALL stk2arg0
03F4 CFEC RJMP stk2arg1
add32fs:
03F5 D001 RCALL add32f
03F6 CEE8 RJMP push_arg4
add32f:
03F7 DFFA RCALL float_prolog
03F8 D00D RCALL FADD
03F9 CFF1 RJMP float_epilog
sub32fs:
03FA D001 RCALL sub32f
03FB CEE3 RJMP push_arg4
sub32f:
03FC DFF5 RCALL float_prolog
03FD D007 RCALL FSUB
03FE CFEC RJMP float_epilog
fret2:
03FF 2F8A MOV R24,R26
0400 2F39 MOV R19,R25
0401 2D24 MOV R18,R4
0402 2D13 MOV R17,R3
0403 2D02 MOV R16,R2
0404 C101 RJMP repack
FSUB:
0405 5890 SUBI R25,0x80
FADD:
0406 D0ED RCALL unpack
0407 3890 CPI R25,0x80
0408 F3D9 BEQ 0x0404
0409 3830 CPI R19,0x80
040A F3A1 BEQ 0x03FF
040B 2FB3 MOV R27,R19
040C 1BB9 SUB R27,R25
040D F3B3 BVS 0x0404
040E F02A BMI 0x0414
040F F431 BNE 0x0416
0410 1502 CP R16,R2
0411 0513 CPC R17,R3
0412 0524 CPC R18,R4
0413 F410 BCC 0x0416
0414 D0D3 RCALL swapacc
0415 CFF5 RJMP 0x040B
0416 31B8 CPI R27,0x18
0417 F018 BCS 0x041B
0418 2422 CLR R2
0419 2433 CLR R3
041A 2444 CLR R4
041B 30B8 CPI R27,0x8
041C F028 BCS 0x0422
041D 2C23 MOV R2,R3
041E 2C34 MOV R3,R4
041F 2444 CLR R4
0420 50B8 SUBI R27,0x8
0421 CFF9 RJMP 0x041B
0422 23BB TST R27
0423 F029 BEQ 0x0429
0424 9446 LSR R4
0425 9437 ROR R3
0426 9427 ROR R2
0427 95BA DEC R27
0428 F7D9 BNE 0x0424
0429 2FB8 MOV R27,R24
042A 27BA EOR R27,R26
042B F042 BMI 0x0434
042C D014 RCALL 0x0441
042D F6B0 BCC 0x0404
042E 9527 ROR R18
042F 9517 ROR R17
0430 9507 ROR R16
0431 5F3F SUBI R19,0xFF
0432 F68B BVC 0x0404
0433 C0A1 RJMP maxres
0434 D010 RCALL usub24
0435 F409 BNE 0x0437
0436 C0A5 RJMP minres
0437 F408 BCC 0x0439
0438 D096 RCALL negmant
0439 2322 TST R18
043A F24A BMI 0x0404
043B 0F00 LSL R16
043C 1F11 ROL R17
043D 1F22 ROL R18
043E 5031 SUBI R19,1
043F F7CB BVC 0x0439
0440 C094 RJMP maxres
0441 0D02 ADD R16,R2
0442 1D13 ADC R17,R3
0443 1D24 ADC R18,R4
0444 9508 RET
usub24:
0445 1902 SUB R16,R2
0446 0913 SBC R17,R3
0447 0924 SBC R18,R4
0448 9508 RET
cmp32f:
0449 DFA8 RCALL float_prolog
044A D001 RCALL FLTCP
044B CF9F RJMP float_epilog
FLTCP:
044C D002 RCALL 0x044F
044D 23BB TST R27
044E 9508 RET
044F 2333 TST R19
0450 F082 BMI 0x0461
0451 2399 TST R25
0452 F042 BMI 0x045B
0453 1739 CP R19,R25
0454 F040 BCS 0x045D
0455 F429 BNE 0x045B
0456 1502 CP R16,R2
0457 0513 CPC R17,R3
0458 0524 CPC R18,R4
0459 F018 BCS 0x045D
045A F021 BEQ 0x045F
045B E0B1 LDI R27,1
045C 9508 RET
045D EFBF LDI R27,0xFF
045E 9508 RET
045F 27BB CLR R27
0460 9508 RET
0461 2399 TST R25
0462 F7D2 BPL 0x045D
0463 1739 CP R19,R25
0464 F3B0 BCS 0x045B
0465 F7B9 BNE 0x045D
0466 1502 CP R16,R2
0467 0513 CPC R17,R3
0468 0524 CPC R18,R4
0469 F388 BCS 0x045B
046A F3A1 BEQ 0x045F
046B CFF1 RJMP 0x045D
046C E7BF LDI R27,0x7F
046D 2F3B MOV R19,R27
046E 2B2B OR R18,R27
046F EF0F LDI R16,0xFF
0470 EF1F LDI R17,0xFF
0471 9508 RET
0472 2700 CLR R16
0473 2711 CLR R17
0474 2722 CLR R18
0475 2733 CLR R19
0476 2788 CLR R24
0477 9508 RET
empy32fs:
0478 D001 RCALL empy32f
0479 CE65 RJMP push_arg4
empy32f:
047A DF77 RCALL float_prolog
047B 920F PUSH R0
047C 92CF PUSH R12
047D D003 RCALL eFMUL
047E 90CF POP R12
047F 900F POP R0
0480 CF6A RJMP float_epilog
eFMUL:
0481 D072 RCALL unpack
0482 F379 BEQ 0x0472
0483 3890 CPI R25,0x80
0484 F369 BEQ 0x0472
0485 278A EOR R24,R26
0486 9408 BSET 0
0487 1F39 ADC R19,R25
0488 F31B BVS 0x046C
0489 D00D RCALL eumul24
048A 2D2F MOV R18,R15
048B 2D1E MOV R17,R14
048C 2D0D MOV R16,R13
048D 2322 TST R18
048E F02A BMI 0x0494
048F 953A DEC R19
0490 0CCC LSL R12
0491 1F00 ROL R16
0492 1F11 ROL R17
0493 1F22 ROL R18
0494 5F3F SUBI R19,0xFF
0495 F2B3 BVS 0x046C
0496 C06F RJMP repack
eumul24:
0497 9D22 MUL R18,R2
0498 2CC0 MOV R12,R0
0499 2CD1 MOV R13,R1
049A 9D24 MUL R18,R4
049B 2CE0 MOV R14,R0
049C 2CF1 MOV R15,R1
049D 9D12 MUL R17,R2
049E 0CC1 ADD R12,R1
049F 1EDB ADC R13,R27
04A0 1EEB ADC R14,R27
04A1 1EFB ADC R15,R27
04A2 9D03 MUL R16,R3
04A3 0CC1 ADD R12,R1
04A4 1EDB ADC R13,R27
04A5 1EEB ADC R14,R27
04A6 1EFB ADC R15,R27
04A7 9D13 MUL R17,R3
04A8 0CC0 ADD R12,R0
04A9 1CD1 ADC R13,R1
04AA 1EEB ADC R14,R27
04AB 1EFB ADC R15,R27
04AC 9D04 MUL R16,R4
04AD 0CC0 ADD R12,R0
04AE 1CD1 ADC R13,R1
04AF 1EEB ADC R14,R27
04B0 1EFB ADC R15,R27
04B1 9D23 MUL R18,R3
04B2 0CD0 ADD R13,R0
04B3 1CE1 ADC R14,R1
04B4 1EFB ADC R15,R27
04B5 9D14 MUL R17,R4
04B6 0CD0 ADD R13,R0
04B7 1CE1 ADC R14,R1
04B8 1EFB ADC R15,R27
04B9 20CC TST R12
04BA F422 BPL 0x04BF
04BB 9488 BCLR 0
04BC 1EDB ADC R13,R27
04BD 1EEB ADC R14,R27
04BE 1EFB ADC R15,R27
04BF 9508 RET
savfacc1:
04C0 938A ST R24,-Y
04C1 93BA ST R27,-Y
04C2 9508 RET
restorefacc1:
04C3 91B9 LD R27,Y+
04C4 9189 LD R24,Y+
04C5 9508 RET
unpackfacc1:
04C6 2F83 MOV R24,R19
04C7 7880 ANDI R24,0x80
04C8 0F22 LSL R18
04C9 1F33 ROL R19
04CA 5830 SUBI R19,0x80
04CB 9408 BSET 0
04CC 9527 ROR R18
04CD 3830 CPI R19,0x80
04CE 9508 RET
negmant:
04CF 9510 COM R17
04D0 9520 COM R18
04D1 9501 NEG R16
04D2 4F1F SBCI R17,0xFF
04D3 4F2F SBCI R18,0xFF
04D4 9508 RET
maxres:
04D5 E7BF LDI R27,0x7F
04D6 2F3B MOV R19,R27
04D7 2B2B OR R18,R27
04D8 EFBF LDI R27,0xFF
04D9 2F0B MOV R16,R27
04DA 2F1B MOV R17,R27
04DB 9508 RET
minres:
04DC 2700 CLR R16
04DD 2711 CLR R17
04DE 2722 CLR R18
04DF 2733 CLR R19
04E0 2788 CLR R24
04E1 9508 RET
ac1toac2:
04E2 2F93 MOV R25,R19
04E3 2E20 MOV R2,R16
04E4 2E31 MOV R3,R17
04E5 2E42 MOV R4,R18
04E6 2FA8 MOV R26,R24
04E7 9508 RET
swapacc:
04E8 922A ST R2,-Y
04E9 923A ST R3,-Y
04EA 924A ST R4,-Y
04EB 939A ST R25,-Y
04EC 93AA ST R26,-Y
04ED DFF4 RCALL ac1toac2
04EE 9189 LD R24,Y+
04EF 9139 LD R19,Y+
04F0 9129 LD R18,Y+
04F1 9119 LD R17,Y+
04F2 9109 LD R16,Y+
04F3 9508 RET
unpack:
04F4 2F83 MOV R24,R19
04F5 E8B0 LDI R27,0x80
04F6 0F22 LSL R18
04F7 1F33 ROL R19
04F8 273B EOR R19,R27
04F9 0FBB LSL R27
04FA 9527 ROR R18
04FB 7880 ANDI R24,0x80
04FC 2FA9 MOV R26,R25
04FD E8B0 LDI R27,0x80
04FE 0C44 LSL R4
04FF 1F99 ROL R25
0500 279B EOR R25,R27
0501 0FBB LSL R27
0502 9447 ROR R4
0503 78A0 ANDI R26,0x80
0504 3830 CPI R19,0x80
0505 9508 RET
repack:
0506 0F22 LSL R18
0507 E8B0 LDI R27,0x80
0508 27B3 EOR R27,R19
0509 0F88 LSL R24
050A 95B7 ROR R27
050B 9527 ROR R18
050C 2F3B MOV R19,R27
050D 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -