📄 bootload.lst
字号:
FILE: <library>
__start:
__text_start:
0E13 E001 LDI R16,1
0E14 BF05 OUT 0x35,R16
0E15 E002 LDI R16,2
0E16 BF05 OUT 0x35,R16
0E17 E5CF LDI R28,0x5F
0E18 E0D4 LDI R29,4
0E19 BFCD OUT 0x3D,R28
0E1A BFDE OUT 0x3E,R29
0E1B 51C0 SUBI R28,0x10
0E1C 40D0 SBCI R29,0
0E1D EA0A LDI R16,0xAA
0E1E 8308 STD Y+0,R16
0E1F 2400 CLR R0
0E20 E6E0 LDI R30,0x60
0E21 E0F0 LDI R31,0
0E22 E010 LDI R17,0
0E23 3AE4 CPI R30,0xA4
0E24 07F1 CPC R31,R17
0E25 F011 BEQ 0x0E28
0E26 9201 ST R0,Z+
0E27 CFFB RJMP 0x0E23
0E28 8300 STD Z+0,R16
0E29 E2E6 LDI R30,0x26
0E2A E1FC LDI R31,0x1C
0E2B E6A0 LDI R26,0x60
0E2C E0B0 LDI R27,0
0E2D E11C LDI R17,0x1C
0E2E 32E6 CPI R30,0x26
0E2F 07F1 CPC R31,R17
0E30 F021 BEQ 0x0E35
0E31 95C8 LPM
0E32 9631 ADIW R30,1
0E33 920D ST R0,X+
0E34 CFF9 RJMP 0x0E2E
0E35 D163 RCALL _main
_exit:
0E36 CFFF RJMP _exit
_write_page:
0E37 D020 RCALL 0x0E58
0E38 01F8 MOVW R30,R16
0E39 93200057 STS 0x57,R18
0E3B 95E8 SPM
0E3C 9508 RET
_fill_temp_buffer:
0E3D D01A RCALL 0x0E58
0E3E 01F9 MOVW R30,R18
0E3F 0108 MOVW R0,R16
0E40 E031 LDI R19,1
0E41 93300057 STS 0x57,R19
0E43 95E8 SPM
0E44 9508 RET
_read_program_memory:
0E45 01F8 MOVW R30,R16
0E46 FD20 SBRC R18,0
0E47 93200057 STS 0x57,R18
0E49 9105 LPM R16,Z+
0E4A 9114 LPM R17,0(Z)
0E4B 9508 RET
_write_lock_bits:
0E4C 2E00 MOV R0,R16
0E4D E019 LDI R17,0x9
0E4E 93100057 STS 0x57,R17
0E50 95E8 SPM
0E51 9508 RET
_enableRWW:
0E52 D005 RCALL 0x0E58
0E53 E1B1 LDI R27,0x11
0E54 93B00057 STS 0x57,R27
0E56 95E8 SPM
0E57 9508 RET
0E58 91B00057 LDS R27,0x57
0E5A FDB0 SBRC R27,0
0E5B CFFC RJMP 0x0E58
0E5C 9508 RET
_FlashLoad:
0E5D E201 LDI R16,0x21
0E5E D112 RCALL _TxChar
0E5F C019 RJMP 0x0E79
0E60 D01A RCALL _GetPageNumber
0E61 91800060 LDS R24,RealPageAddress
0E63 91900061 LDS R25,RealPageAddress+1
0E65 3F8F CPI R24,0xFF
0E66 EFEF LDI R30,0xFF
0E67 079E CPC R25,R30
0E68 F409 BNE 0x0E6A
0E69 C010 RJMP 0x0E7A
0E6A D02B RCALL _GetPage
0E6B 2300 TST R16
0E6C F051 BEQ 0x0E77
0E6D D054 RCALL _WriteFlash
0E6E D081 RCALL _CheckFlash
0E6F 2300 TST R16
0E70 F019 BEQ 0x0E74
0E71 E201 LDI R16,0x21
0E72 D0FE RCALL _TxChar
0E73 C005 RJMP 0x0E79
0E74 E400 LDI R16,0x40
0E75 D0FB RCALL _TxChar
0E76 C002 RJMP 0x0E79
0E77 E400 LDI R16,0x40
0E78 D0F8 RCALL _TxChar
0E79 CFE6 RJMP 0x0E60
0E7A 9508 RET
_GetPageNumber:
PageAddressLow --> R20
PageAddressHigh --> R22
0E7B D14E RCALL push_gset2
0E7C D0EC RCALL _IsChar
0E7D 2300 TST R16
0E7E F3E9 BEQ 0x0E7C
0E7F D0EF RCALL _RxChar
0E80 2F60 MOV R22,R16
0E81 D0E7 RCALL _IsChar
0E82 2300 TST R16
0E83 F3E9 BEQ 0x0E81
0E84 D0EA RCALL _RxChar
0E85 2F40 MOV R20,R16
0E86 2E36 MOV R3,R22
0E87 2E24 MOV R2,R20
0E88 92300061 STS RealPageAddress+1,R3
0E8A 92200060 STS RealPageAddress,R2
0E8C E026 LDI R18,6
0E8D E030 LDI R19,0
0E8E 0181 MOVW R16,R2
0E8F D153 RCALL lsl16
0E90 93100063 STS PageAddress+1,R17
0E92 93000062 STS PageAddress,R16
0E94 D129 RCALL pop_gset2
0E95 9508 RET
_GetPage:
CheckSum --> R20
LocalCheckSum --> R22
i --> R10
0E96 D131 RCALL push_gset3
0E97 2766 CLR R22
0E98 2744 CLR R20
0E99 24AA CLR R10
0E9A 24BB CLR R11
0E9B C014 RJMP 0x0EB0
0E9C D0CC RCALL _IsChar
0E9D 2300 TST R16
0E9E F3E9 BEQ 0x0E9C
0E9F 95A8 WDR
0EA0 D0CE RCALL _RxChar
0EA1 E684 LDI R24,0x64
0EA2 E090 LDI R25,0
0EA3 01F5 MOVW R30,R10
0EA4 0FE8 ADD R30,R24
0EA5 1FF9 ADC R31,R25
0EA6 8300 STD Z+0,R16
0EA7 01F5 MOVW R30,R10
0EA8 0FE8 ADD R30,R24
0EA9 1FF9 ADC R31,R25
0EAA 8020 LDD R2,Z+0
0EAB 0D62 ADD R22,R2
0EAC 95A8 WDR
0EAD 01C5 MOVW R24,R10
0EAE 9601 ADIW R24,1
0EAF 015C MOVW R10,R24
0EB0 01C5 MOVW R24,R10
0EB1 3480 CPI R24,0x40
0EB2 E0E0 LDI R30,0
0EB3 079E CPC R25,R30
0EB4 F338 BCS 0x0E9C
0EB5 D0B3 RCALL _IsChar
0EB6 2300 TST R16
0EB7 F3E9 BEQ 0x0EB5
0EB8 95A8 WDR
0EB9 D0B5 RCALL _RxChar
0EBA 2F40 MOV R20,R16
0EBB 1760 CP R22,R16
0EBC F411 BNE 0x0EBF
0EBD E001 LDI R16,1
0EBE C001 RJMP 0x0EC0
0EBF 2700 CLR R16
0EC0 D0FF RCALL pop_gset3
0EC1 9508 RET
_WriteFlash:
TempInt --> R20
i --> R22
0EC2 D107 RCALL push_gset2
0EC3 2766 CLR R22
0EC4 2777 CLR R23
0EC5 C016 RJMP 0x0EDC
0EC6 E684 LDI R24,0x64
0EC7 E090 LDI R25,0
0EC8 01FB MOVW R30,R22
0EC9 9631 ADIW R30,1
0ECA 0FE8 ADD R30,R24
0ECB 1FF9 ADC R31,R25
0ECC 8020 LDD R2,Z+0
0ECD 2433 CLR R3
0ECE 2C32 MOV R3,R2
0ECF 2422 CLR R2
0ED0 01FB MOVW R30,R22
0ED1 0FE8 ADD R30,R24
0ED2 1FF9 ADC R31,R25
0ED3 8140 LDD R20,Z+0
0ED4 2755 CLR R21
0ED5 0D42 ADD R20,R2
0ED6 1D53 ADC R21,R3
0ED7 019B MOVW R18,R22
0ED8 018A MOVW R16,R20
0ED9 DF63 RCALL _fill_temp_buffer
0EDA 5F6E SUBI R22,0xFE
0EDB 4F7F SBCI R23,0xFF
0EDC 3460 CPI R22,0x40
0EDD E0E0 LDI R30,0
0EDE 077E CPC R23,R30
0EDF F330 BCS 0x0EC6
0EE0 E023 LDI R18,3
0EE1 91000062 LDS R16,PageAddress
0EE3 91100063 LDS R17,PageAddress+1
0EE5 DF51 RCALL _write_page
0EE6 E025 LDI R18,5
0EE7 91000062 LDS R16,PageAddress
0EE9 91100063 LDS R17,PageAddress+1
0EEB DF4B RCALL _write_page
0EEC DF65 RCALL _enableRWW
0EED 95A8 WDR
0EEE D0CF RCALL pop_gset2
0EEF 9508 RET
_CheckFlash:
TempInt2 --> R20
TempInt --> R22
i --> R10
0EF0 D0D7 RCALL push_gset3
0EF1 95A8 WDR
0EF2 2744 CLR R20
0EF3 2755 CLR R21
0EF4 C021 RJMP 0x0F16
0EF5 2722 CLR R18
0EF6 91000062 LDS R16,PageAddress
0EF8 91100063 LDS R17,PageAddress+1
0EFA 0F04 ADD R16,R20
0EFB 1F15 ADC R17,R21
0EFC DF48 RCALL _read_program_memory
0EFD 0158 MOVW R10,R16
0EFE E684 LDI R24,0x64
0EFF E090 LDI R25,0
0F00 01FA MOVW R30,R20
0F01 9631 ADIW R30,1
0F02 0FE8 ADD R30,R24
0F03 1FF9 ADC R31,R25
0F04 8020 LDD R2,Z+0
0F05 2433 CLR R3
0F06 2C32 MOV R3,R2
0F07 2422 CLR R2
0F08 01FA MOVW R30,R20
0F09 0FE8 ADD R30,R24
0F0A 1FF9 ADC R31,R25
0F0B 8160 LDD R22,Z+0
0F0C 2777 CLR R23
0F0D 0D62 ADD R22,R2
0F0E 1D73 ADC R23,R3
0F0F 1706 CP R16,R22
0F10 0717 CPC R17,R23
0F11 F011 BEQ 0x0F14
0F12 2700 CLR R16
0F13 C007 RJMP 0x0F1B
0F14 5F4E SUBI R20,0xFE
0F15 4F5F SBCI R21,0xFF
0F16 3440 CPI R20,0x40
0F17 E0E0 LDI R30,0
0F18 075E CPC R21,R30
0F19 F2D8 BCS 0x0EF5
0F1A E001 LDI R16,1
0F1B D0A4 RCALL pop_gset3
0F1C 9508 RET
_EEpromLoad:
0F1D D0A8 RCALL push_gset4
0F1E E209 LDI R16,0x29
0F1F D051 RCALL _TxChar
0F20 E201 LDI R16,0x21
0F21 D04F RCALL _TxChar
0F22 C033 RJMP 0x0F56
0F23 95A8 WDR
0F24 2744 CLR R20
0F25 D043 RCALL _IsChar
0F26 2300 TST R16
0F27 F3E9 BEQ 0x0F25
0F28 D046 RCALL _RxChar
0F29 2EA0 MOV R10,R16
0F2A 0F40 ADD R20,R16
0F2B D03D RCALL _IsChar
0F2C 2300 TST R16
0F2D F3E9 BEQ 0x0F2B
0F2E D040 RCALL _RxChar
0F2F 2F60 MOV R22,R16
0F30 0F40 ADD R20,R16
0F31 2CDA MOV R13,R10
0F32 2EC6 MOV R12,R22
0F33 01C6 MOVW R24,R12
0F34 3F8F CPI R24,0xFF
0F35 EFEF LDI R30,0xFF
0F36 079E CPC R25,R30
0F37 F409 BNE 0x0F39
0F38 C01E RJMP 0x0F57
0F39 D02F RCALL _IsChar
0F3A 2300 TST R16
0F3B F3E9 BEQ 0x0F39
0F3C D032 RCALL _RxChar
0F3D 2EA0 MOV R10,R16
0F3E 0F40 ADD R20,R16
0F3F 95A8 WDR
0F40 D028 RCALL _IsChar
0F41 2300 TST R16
0F42 F3E9 BEQ 0x0F40
0F43 D02B RCALL _RxChar
0F44 2F60 MOV R22,R16
0F45 1704 CP R16,R20
0F46 F469 BNE 0x0F54
0F47 2D2A MOV R18,R10
0F48 0186 MOVW R16,R12
0F49 D00F RCALL _EEPROMwrite
0F4A 0186 MOVW R16,R12
0F4B D016 RCALL _EEPROMread
0F4C 150A CP R16,R10
0F4D F419 BNE 0x0F51
0F4E E201 LDI R16,0x21
0F4F D021 RCALL _TxChar
0F50 C005 RJMP 0x0F56
0F51 E400 LDI R16,0x40
0F52 D01E RCALL _TxChar
0F53 C002 RJMP 0x0F56
0F54 E400 LDI R16,0x40
0F55 D01B RCALL _TxChar
0F56 CFCC RJMP 0x0F23
0F57 D06A RCALL pop_gset4
0F58 9508 RET
_EEPROMwrite:
0F59 99E1 SBIC 0x1C,1
0F5A CFFE RJMP _EEPROMwrite
0F5B BB1F OUT 0x1F,R17
0F5C BB0E OUT 0x1E,R16
0F5D BB2D OUT 0x1D,R18
0F5E 9AE2 SBI 0x1C,2
0F5F 9AE1 SBI 0x1C,1
0F60 95A8 WDR
0F61 9508 RET
_EEPROMread:
0F62 99E1 SBIC 0x1C,1
0F63 CFFE RJMP _EEPROMread
0F64 BB1F OUT 0x1F,R17
0F65 BB0E OUT 0x1E,R16
0F66 9AE0 SBI 0x1C,0
0F67 B30D IN R16,0x1D
0F68 9508 RET
_IsChar:
0F69 9B5F SBIS 0x0B,7
0F6A C002 RJMP 0x0F6D
0F6B E001 LDI R16,1
0F6C C001 RJMP 0x0F6E
0F6D 2700 CLR R16
0F6E 9508 RET
_RxChar:
0F6F B10C IN R16,0x0C
0F70 9508 RET
_TxChar:
ch --> R16
0F71 9B5D SBIS 0x0B,5
0F72 CFFE RJMP _TxChar
0F73 9AAD SBI 0x15,5
0F74 B90C OUT 0x0C,R16
0F75 9B5E SBIS 0x0B,6
0F76 CFFE RJMP 0x0F75
0F77 9A5E SBI 0x0B,6
0F78 98AD CBI 0x15,5
0F79 95A8 WDR
0F7A 9508 RET
_Wait:
i --> R16
0F7B E000 LDI R16,0
0F7C E813 LDI R17,0x83
0F7D 5F0F SUBI R16,0xFF
0F7E 4F1F SBCI R17,0xFF
0F7F 3000 CPI R16,0
0F80 E7ED LDI R30,0x7D
0F81 071E CPC R17,R30
0F82 F3D4 BLT 0x0F7D
0F83 95A8 WDR
0F84 9508 RET
_SendDeviceID:
0F85 E401 LDI R16,0x41
0F86 DFEA RCALL _TxChar
0F87 E60C LDI R16,0x6C
0F88 DFE8 RCALL _TxChar
0F89 E604 LDI R16,0x64
0F8A DFE6 RCALL _TxChar
0F8B E502 LDI R16,0x52
0F8C DFE4 RCALL _TxChar
0F8D E301 LDI R16,0x31
0F8E DFE2 RCALL _TxChar
0F8F DFDF RCALL _RxChar
0F90 95A8 WDR
0F91 9508 RET
_ExecCode:
0F92 E081 LDI R24,1
0F93 BF8B OUT 0x3B,R24
0F94 2422 CLR R2
0F95 BE2B OUT 0x3B,R2
0F96 940C0000 JMP 0x0
0F98 9508 RET
_main:
i --> Y+1
0F99 94F8 BCLR 7
0F9A B581 IN R24,0x21
0F9B 6188 ORI R24,0x18
0F9C BD81 OUT 0x21,R24
0F9D E087 LDI R24,7
0F9E BD81 OUT 0x21,R24
0F9F E081 LDI R24,1
0FA0 BB82 OUT 0x12,R24
0FA1 2422 CLR R2
0FA2 B82A OUT 0x0A,R2
0FA3 B82B OUT 0x0B,R2
0FA4 E886 LDI R24,0x86
0FA5 BD80 OUT 0x20,R24
0FA6 BC20 OUT 0x20,R2
0FA7 E188 LDI R24,0x18
0FA8 B98A OUT 0x0A,R24
0FA9 9AA5 SBI 0x14,5
0FAA 98AD CBI 0x15,5
0FAB E045 LDI R20,5
0FAC C00D RJMP 0x0FBA
0FAD B949 OUT 0x09,R20
0FAE DFC0 RCALL _RxChar
0FAF E30E LDI R16,0x3E
0FB0 DFC0 RCALL _TxChar
0FB1 DFC9 RCALL _Wait
0FB2 DFBC RCALL _RxChar
0FB3 330C CPI R16,0x3C
0FB4 F421 BNE 0x0FB9
0FB5 DFCF RCALL _SendDeviceID
0FB6 DEA6 RCALL _FlashLoad
0FB7 DF65 RCALL _EEpromLoad
0FB8 DFD9 RCALL _ExecCode
0FB9 9543 INC R20
0FBA 3144 CPI R20,0x14
0FBB F388 BCS 0x0FAD
0FBC DFD5 RCALL _ExecCode
0FBD 9508 RET
pop_gset2:
0FBE E0E2 LDI R30,2
0FBF C010 RJMP pop
pop_gset3:
0FC0 E0E4 LDI R30,4
0FC1 C00E RJMP pop
pop_gset4:
0FC2 E0E8 LDI R30,0x8
0FC3 C00C RJMP pop
push_gset5:
0FC4 92FA ST R15,-Y
0FC5 92EA ST R14,-Y
push_gset4:
0FC6 92DA ST R13,-Y
0FC7 92CA ST R12,-Y
push_gset3:
0FC8 92BA ST R11,-Y
0FC9 92AA ST R10,-Y
push_gset2:
0FCA 937A ST R23,-Y
0FCB 936A ST R22,-Y
push_gset1:
0FCC 935A ST R21,-Y
0FCD 934A ST R20,-Y
0FCE 9508 RET
pop_gset1:
0FCF E0E1 LDI R30,1
pop:
0FD0 9149 LD R20,Y+
0FD1 9159 LD R21,Y+
0FD2 FDE0 SBRC R30,0
0FD3 9508 RET
0FD4 9169 LD R22,Y+
0FD5 9179 LD R23,Y+
0FD6 FDE1 SBRC R30,1
0FD7 9508 RET
0FD8 90A9 LD R10,Y+
0FD9 90B9 LD R11,Y+
0FDA FDE2 SBRC R30,2
0FDB 9508 RET
0FDC 90C9 LD R12,Y+
0FDD 90D9 LD R13,Y+
0FDE FDE3 SBRC R30,3
0FDF 9508 RET
0FE0 90E9 LD R14,Y+
0FE1 90F9 LD R15,Y+
0FE2 9508 RET
lsl16:
0FE3 2322 TST R18
0FE4 F021 BEQ 0x0FE9
0FE5 0F00 LSL R16
0FE6 1F11 ROL R17
0FE7 952A DEC R18
0FE8 CFFA RJMP lsl16
0FE9 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -