📄 main.lss
字号:
main.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00000230 00000000 00000000 00000074 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 0000000c 00800060 00000230 000002a4 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .stab 00000378 00000000 00000000 000002b0 2**2
CONTENTS, READONLY, DEBUGGING
3 .stabstr 00000071 00000000 00000000 00000628 2**0
CONTENTS, READONLY, DEBUGGING
4 .debug_aranges 00000020 00000000 00000000 00000699 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_pubnames 00000037 00000000 00000000 000006b9 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_info 000001e1 00000000 00000000 000006f0 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_abbrev 00000132 00000000 00000000 000008d1 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_line 000001e7 00000000 00000000 00000a03 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_frame 00000040 00000000 00000000 00000bec 2**2
CONTENTS, READONLY, DEBUGGING
10 .debug_str 000000c7 00000000 00000000 00000c2c 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_loc 00000056 00000000 00000000 00000cf3 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 2a 00 jmp 0x54 ; 0x54 <__ctors_end>
4: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
8: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
10: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
14: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
18: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
1c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
20: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
24: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
28: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
2c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
30: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
34: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
38: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
3c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
40: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
44: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
48: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
4c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
50: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
00000054 <__ctors_end>:
54: 11 24 eor r1, r1
56: 1f be out 0x3f, r1 ; 63
58: cf e5 ldi r28, 0x5F ; 95
5a: d4 e0 ldi r29, 0x04 ; 4
5c: de bf out 0x3e, r29 ; 62
5e: cd bf out 0x3d, r28 ; 61
00000060 <__do_copy_data>:
60: 10 e0 ldi r17, 0x00 ; 0
62: a0 e6 ldi r26, 0x60 ; 96
64: b0 e0 ldi r27, 0x00 ; 0
66: e0 e3 ldi r30, 0x30 ; 48
68: f2 e0 ldi r31, 0x02 ; 2
6a: 02 c0 rjmp .+4 ; 0x70 <.do_copy_data_start>
0000006c <.do_copy_data_loop>:
6c: 05 90 lpm r0, Z+
6e: 0d 92 st X+, r0
00000070 <.do_copy_data_start>:
70: ac 36 cpi r26, 0x6C ; 108
72: b1 07 cpc r27, r17
74: d9 f7 brne .-10 ; 0x6c <.do_copy_data_loop>
00000076 <__do_clear_bss>:
76: 10 e0 ldi r17, 0x00 ; 0
78: ac e6 ldi r26, 0x6C ; 108
7a: b0 e0 ldi r27, 0x00 ; 0
7c: 01 c0 rjmp .+2 ; 0x80 <.do_clear_bss_start>
0000007e <.do_clear_bss_loop>:
7e: 1d 92 st X+, r1
00000080 <.do_clear_bss_start>:
80: ac 36 cpi r26, 0x6C ; 108
82: b1 07 cpc r27, r17
84: e1 f7 brne .-8 ; 0x7e <.do_clear_bss_loop>
86: 0e 94 76 00 call 0xec ; 0xec <main>
8a: 0c 94 17 01 jmp 0x22e ; 0x22e <_exit>
0000008e <__bad_interrupt>:
8e: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>
00000092 <shift>:
char led[]={0x11,0xD7,0x32,0x92,0xD4,0x98,0x18,0xD3,0x10,0x90,0xff}; // 0 1 2 3 4 5 6 7 8 9 灭
//====================== 移位子程序 ==================
void shift(uchar b)
{
92: e8 2f mov r30, r24
94: ff 27 eor r31, r31
96: e0 5a subi r30, 0xA0 ; 160
98: ff 4f sbci r31, 0xFF ; 255
9a: 80 81 ld r24, Z
uchar i;
b=led[b];
if (b==0xff)
9c: 8f 3f cpi r24, 0xFF ; 255
9e: 09 f4 brne .+2 ; 0xa2 <shift+0x10>
a0: 8e ef ldi r24, 0xFE ; 254
b=b&0xfe;
PORTA=(0<<PA2);
a2: 1b ba out 0x1b, r1 ; 27
a4: 20 e0 ldi r18, 0x00 ; 0
a6: 30 e0 ldi r19, 0x00 ; 0
a8: e8 2f mov r30, r24
aa: ff 27 eor r31, r31
ac: 41 e0 ldi r20, 0x01 ; 1
for(i=0;i<8;i++)
{
if ((b<<i) & 0x80)
ae: cf 01 movw r24, r30
b0: 02 2e mov r0, r18
b2: 02 c0 rjmp .+4 ; 0xb8 <shift+0x26>
b4: 88 0f add r24, r24
b6: 99 1f adc r25, r25
b8: 0a 94 dec r0
ba: e2 f7 brpl .-8 ; 0xb4 <shift+0x22>
bc: 87 ff sbrs r24, 7
be: 02 c0 rjmp .+4 ; 0xc4 <shift+0x32>
PORTA = (1<<PA0);
c0: 4b bb out 0x1b, r20 ; 27
c2: 01 c0 rjmp .+2 ; 0xc6 <shift+0x34>
else
PORTA = (0<<PA0);
c4: 1b ba out 0x1b, r1 ; 27
PORTA = PORTA|(1<<PA1);
c6: d9 9a sbi 0x1b, 1 ; 27
PORTA = PORTA&(0<<PA1);
c8: 8b b3 in r24, 0x1b ; 27
ca: 1b ba out 0x1b, r1 ; 27
cc: 2f 5f subi r18, 0xFF ; 255
ce: 3f 4f sbci r19, 0xFF ; 255
d0: 28 30 cpi r18, 0x08 ; 8
d2: 31 05 cpc r19, r1
d4: 61 f7 brne .-40 ; 0xae <shift+0x1c>
d6: 08 95 ret
000000d8 <delay>:
}
}
//==================== 延时程序 ======================
void delay(void)
{
d8: 20 e0 ldi r18, 0x00 ; 0
da: e0 ed ldi r30, 0xD0 ; 208
dc: f7 e0 ldi r31, 0x07 ; 7
*/
void
_delay_loop_2(uint16_t __count)
{
__asm__ volatile (
de: cf 01 movw r24, r30
e0: 01 97 sbiw r24, 0x01 ; 1
e2: f1 f7 brne .-4 ; 0xe0 <delay+0x8>
uchar i=0;
for (i=0; i<125; i++)
e4: 2f 5f subi r18, 0xFF ; 255
e6: 2d 37 cpi r18, 0x7D ; 125
e8: d1 f7 brne .-12 ; 0xde <delay+0x6>
ea: 08 95 ret
000000ec <main>:
_delay_ms(1);
}
//========================= 主函数 ================
int main(void)
{
ec: af 92 push r10
ee: bf 92 push r11
f0: cf 92 push r12
f2: df 92 push r13
f4: ef 92 push r14
f6: ff 92 push r15
f8: 0f 93 push r16
fa: 1f 93 push r17
fc: cf 93 push r28
fe: df 93 push r29
int i=0;
int sec=0,min=0,hour=0;
PORTA=0XFF;
100: 8f ef ldi r24, 0xFF ; 255
102: 8b bb out 0x1b, r24 ; 27
DDRA=0Xff;
104: 8a bb out 0x1a, r24 ; 26
106: c0 e0 ldi r28, 0x00 ; 0
108: d0 e0 ldi r29, 0x00 ; 0
// 清除乱码
for (i=0; i<8; i++)
{
shift(10);
10a: 8a e0 ldi r24, 0x0A ; 10
10c: 0e 94 49 00 call 0x92 ; 0x92 <shift>
110: 21 96 adiw r28, 0x01 ; 1
112: c8 30 cpi r28, 0x08 ; 8
114: d1 05 cpc r29, r1
116: c9 f7 brne .-14 ; 0x10a <main+0x1e>
118: ee 24 eor r14, r14
11a: ff 24 eor r15, r15
}
//开始显示数据
while (1)
{
for (hour=0; hour<24; hour++)
{
shift(hour%10);
11c: c7 01 movw r24, r14
11e: 6a e0 ldi r22, 0x0A ; 10
120: 70 e0 ldi r23, 0x00 ; 0
122: 0e 94 f0 00 call 0x1e0 ; 0x1e0 <__divmodhi4>
126: a8 2e mov r10, r24
128: 0e 94 49 00 call 0x92 ; 0x92 <shift>
shift(hour/10);
12c: c7 01 movw r24, r14
12e: 6a e0 ldi r22, 0x0A ; 10
130: 70 e0 ldi r23, 0x00 ; 0
132: 0e 94 f0 00 call 0x1e0 ; 0x1e0 <__divmodhi4>
136: cb 01 movw r24, r22
138: b6 2e mov r11, r22
13a: 0e 94 49 00 call 0x92 ; 0x92 <shift>
shift(10);
13e: 8a e0 ldi r24, 0x0A ; 10
140: 0e 94 49 00 call 0x92 ; 0x92 <shift>
144: 00 e0 ldi r16, 0x00 ; 0
146: 10 e0 ldi r17, 0x00 ; 0
for (min=0; min<60; min++)
{
shift(min%10);
148: c8 01 movw r24, r16
14a: 6a e0 ldi r22, 0x0A ; 10
14c: 70 e0 ldi r23, 0x00 ; 0
14e: 0e 94 f0 00 call 0x1e0 ; 0x1e0 <__divmodhi4>
152: c8 2e mov r12, r24
154: 0e 94 49 00 call 0x92 ; 0x92 <shift>
shift(min/10);
158: c8 01 movw r24, r16
15a: 6a e0 ldi r22, 0x0A ; 10
15c: 70 e0 ldi r23, 0x00 ; 0
15e: 0e 94 f0 00 call 0x1e0 ; 0x1e0 <__divmodhi4>
162: cb 01 movw r24, r22
164: d6 2e mov r13, r22
166: 0e 94 49 00 call 0x92 ; 0x92 <shift>
shift(10);
16a: 8a e0 ldi r24, 0x0A ; 10
16c: 0e 94 49 00 call 0x92 ; 0x92 <shift>
170: c0 e0 ldi r28, 0x00 ; 0
172: d0 e0 ldi r29, 0x00 ; 0
for (sec=0; sec<60; sec++)
{
shift(hour%10);
174: 8a 2d mov r24, r10
176: 0e 94 49 00 call 0x92 ; 0x92 <shift>
shift(hour/10);
17a: 8b 2d mov r24, r11
17c: 0e 94 49 00 call 0x92 ; 0x92 <shift>
shift(10);
180: 8a e0 ldi r24, 0x0A ; 10
182: 0e 94 49 00 call 0x92 ; 0x92 <shift>
shift(min%10);
186: 8c 2d mov r24, r12
188: 0e 94 49 00 call 0x92 ; 0x92 <shift>
shift(min/10);
18c: 8d 2d mov r24, r13
18e: 0e 94 49 00 call 0x92 ; 0x92 <shift>
shift(10);
192: 8a e0 ldi r24, 0x0A ; 10
194: 0e 94 49 00 call 0x92 ; 0x92 <shift>
shift(sec%10);
198: ce 01 movw r24, r28
19a: 6a e0 ldi r22, 0x0A ; 10
19c: 70 e0 ldi r23, 0x00 ; 0
19e: 0e 94 f0 00 call 0x1e0 ; 0x1e0 <__divmodhi4>
1a2: 0e 94 49 00 call 0x92 ; 0x92 <shift>
shift(sec/10);
1a6: ce 01 movw r24, r28
1a8: 6a e0 ldi r22, 0x0A ; 10
1aa: 70 e0 ldi r23, 0x00 ; 0
1ac: 0e 94 f0 00 call 0x1e0 ; 0x1e0 <__divmodhi4>
1b0: cb 01 movw r24, r22
1b2: 0e 94 49 00 call 0x92 ; 0x92 <shift>
delay();
1b6: 0e 94 6c 00 call 0xd8 ; 0xd8 <delay>
1ba: 21 96 adiw r28, 0x01 ; 1
1bc: cc 33 cpi r28, 0x3C ; 60
1be: d1 05 cpc r29, r1
1c0: c9 f6 brne .-78 ; 0x174 <main+0x88>
1c2: 0f 5f subi r16, 0xFF ; 255
1c4: 1f 4f sbci r17, 0xFF ; 255
1c6: 0c 33 cpi r16, 0x3C ; 60
1c8: 11 05 cpc r17, r1
1ca: 09 f0 breq .+2 ; 0x1ce <main+0xe2>
1cc: bd cf rjmp .-134 ; 0x148 <main+0x5c>
1ce: 08 94 sec
1d0: e1 1c adc r14, r1
1d2: f1 1c adc r15, r1
1d4: 88 e1 ldi r24, 0x18 ; 24
1d6: e8 16 cp r14, r24
1d8: f1 04 cpc r15, r1
1da: 09 f0 breq .+2 ; 0x1de <main+0xf2>
1dc: 9f cf rjmp .-194 ; 0x11c <main+0x30>
1de: 9c cf rjmp .-200 ; 0x118 <main+0x2c>
000001e0 <__divmodhi4>:
1e0: 97 fb bst r25, 7
1e2: 09 2e mov r0, r25
1e4: 07 26 eor r0, r23
1e6: 0a d0 rcall .+20 ; 0x1fc <__divmodhi4_neg1>
1e8: 77 fd sbrc r23, 7
1ea: 04 d0 rcall .+8 ; 0x1f4 <__divmodhi4_neg2>
1ec: 0c d0 rcall .+24 ; 0x206 <__udivmodhi4>
1ee: 06 d0 rcall .+12 ; 0x1fc <__divmodhi4_neg1>
1f0: 00 20 and r0, r0
1f2: 1a f4 brpl .+6 ; 0x1fa <__divmodhi4_exit>
000001f4 <__divmodhi4_neg2>:
1f4: 70 95 com r23
1f6: 61 95 neg r22
1f8: 7f 4f sbci r23, 0xFF ; 255
000001fa <__divmodhi4_exit>:
1fa: 08 95 ret
000001fc <__divmodhi4_neg1>:
1fc: f6 f7 brtc .-4 ; 0x1fa <__divmodhi4_exit>
1fe: 90 95 com r25
200: 81 95 neg r24
202: 9f 4f sbci r25, 0xFF ; 255
204: 08 95 ret
00000206 <__udivmodhi4>:
206: aa 1b sub r26, r26
208: bb 1b sub r27, r27
20a: 51 e1 ldi r21, 0x11 ; 17
20c: 07 c0 rjmp .+14 ; 0x21c <__udivmodhi4_ep>
0000020e <__udivmodhi4_loop>:
20e: aa 1f adc r26, r26
210: bb 1f adc r27, r27
212: a6 17 cp r26, r22
214: b7 07 cpc r27, r23
216: 10 f0 brcs .+4 ; 0x21c <__udivmodhi4_ep>
218: a6 1b sub r26, r22
21a: b7 0b sbc r27, r23
0000021c <__udivmodhi4_ep>:
21c: 88 1f adc r24, r24
21e: 99 1f adc r25, r25
220: 5a 95 dec r21
222: a9 f7 brne .-22 ; 0x20e <__udivmodhi4_loop>
224: 80 95 com r24
226: 90 95 com r25
228: bc 01 movw r22, r24
22a: cd 01 movw r24, r26
22c: 08 95 ret
0000022e <_exit>:
22e: ff cf rjmp .-2 ; 0x22e <_exit>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -